Move SQS client ID generation to Exchange

This commit is contained in:
Michael Pu 2024-03-01 20:42:59 -05:00 committed by Cecylia Bocovich
parent c4c22fa2a0
commit 9cd362f42d
No known key found for this signature in database
GPG key ID: 009DE379FD9B7B90

View file

@ -19,12 +19,11 @@ import (
) )
type sqsRendezvous struct { type sqsRendezvous struct {
transport http.RoundTripper transport http.RoundTripper
sqsClientID string sqsClient sqsclient.SQSClient
sqsClient sqsclient.SQSClient sqsURL *url.URL
sqsURL *url.URL timeout time.Duration
timeout time.Duration numRetries int
numRetries int
} }
func newSQSRendezvous(sqsQueue string, sqsAccessKeyId string, sqsSecretKey string, transport http.RoundTripper) (*sqsRendezvous, error) { func newSQSRendezvous(sqsQueue string, sqsAccessKeyId string, sqsSecretKey string, transport http.RoundTripper) (*sqsRendezvous, error) {
@ -33,13 +32,6 @@ func newSQSRendezvous(sqsQueue string, sqsAccessKeyId string, sqsSecretKey strin
return nil, err return nil, err
} }
var id [8]byte
_, err = rand.Read(id[:])
if err != nil {
log.Fatal(err)
}
clientID := hex.EncodeToString(id[:])
queueURL := sqsURL.String() queueURL := sqsURL.String()
hostName := sqsURL.Hostname() hostName := sqsURL.Hostname()
@ -61,26 +53,32 @@ func newSQSRendezvous(sqsQueue string, sqsAccessKeyId string, sqsSecretKey strin
client := sqs.NewFromConfig(cfg) client := sqs.NewFromConfig(cfg)
log.Println("Queue URL: ", queueURL) log.Println("Queue URL: ", queueURL)
log.Println("SQS Client ID: ", clientID)
return &sqsRendezvous{ return &sqsRendezvous{
transport: transport, transport: transport,
sqsClientID: clientID, sqsClient: client,
sqsClient: client, sqsURL: sqsURL,
sqsURL: sqsURL, timeout: time.Second,
timeout: time.Second, numRetries: 5,
numRetries: 5,
}, nil }, nil
} }
func (r *sqsRendezvous) Exchange(encPollReq []byte) ([]byte, error) { func (r *sqsRendezvous) Exchange(encPollReq []byte) ([]byte, error) {
log.Println("Negotiating via SQS Queue rendezvous...") log.Println("Negotiating via SQS Queue rendezvous...")
_, err := r.sqsClient.SendMessage(context.TODO(), &sqs.SendMessageInput{ var id [8]byte
_, err := rand.Read(id[:])
if err != nil {
return nil, err
}
sqsClientID := hex.EncodeToString(id[:])
log.Println("SQS Client ID for rendezvous: " + sqsClientID)
_, err = r.sqsClient.SendMessage(context.TODO(), &sqs.SendMessageInput{
MessageAttributes: map[string]types.MessageAttributeValue{ MessageAttributes: map[string]types.MessageAttributeValue{
"ClientID": { "ClientID": {
DataType: aws.String("String"), DataType: aws.String("String"),
StringValue: aws.String(r.sqsClientID), StringValue: aws.String(sqsClientID),
}, },
}, },
MessageBody: aws.String(string(encPollReq)), MessageBody: aws.String(string(encPollReq)),
@ -98,7 +96,7 @@ func (r *sqsRendezvous) Exchange(encPollReq []byte) ([]byte, error) {
// may not be created yet. We will retry up to 5 times before we error out. // may not be created yet. We will retry up to 5 times before we error out.
var res *sqs.GetQueueUrlOutput var res *sqs.GetQueueUrlOutput
res, err = r.sqsClient.GetQueueUrl(context.TODO(), &sqs.GetQueueUrlInput{ res, err = r.sqsClient.GetQueueUrl(context.TODO(), &sqs.GetQueueUrlInput{
QueueName: aws.String("snowflake-client-" + r.sqsClientID), QueueName: aws.String("snowflake-client-" + sqsClientID),
}) })
if err != nil { if err != nil {
log.Println(err) log.Println(err)