diff --git a/analytic/cmd/main.go b/analytic/cmd/main.go index 10064a7c..b7aa2ccc 100644 --- a/analytic/cmd/main.go +++ b/analytic/cmd/main.go @@ -119,25 +119,29 @@ func newSQSConsumer(appCtx context.Context, config *config.Configuration) (*sqs_ func newAwsConfig(appCtx context.Context, cfg *config.Configuration) (aws.Config, error) { region := cfg.AwsRegion - credentials := credentials.NewStaticCredentialsProvider(cfg.AwsAccessKeyID, cfg.AwsSecretAccessKey, "") - customResolver := aws.EndpointResolverFunc(func(service, region string) (aws.Endpoint, error) { - if cfg.AwsEndpoint != "" { - return aws.Endpoint{ - PartitionID: "aws", - URL: cfg.AwsEndpoint, - SigningRegion: region, - }, nil - } - return aws.Endpoint{}, &aws.EndpointNotFoundError{} - }) + if cfg.AwsAccessKeyID != "" && cfg.AwsSecretAccessKey != "" { + credentials := credentials.NewStaticCredentialsProvider(cfg.AwsAccessKeyID, cfg.AwsSecretAccessKey, "") + customResolver := aws.EndpointResolverFunc(func(service, region string) (aws.Endpoint, error) { + if cfg.AwsEndpoint != "" { + return aws.Endpoint{ + PartitionID: "aws", + URL: cfg.AwsEndpoint, + SigningRegion: region, + }, nil + } - awsCfg, err := awsconfig.LoadDefaultConfig(appCtx, - awsconfig.WithRegion(region), - awsconfig.WithEndpointResolver(customResolver), - awsconfig.WithCredentialsProvider(credentials), - ) - return awsCfg, err + return aws.Endpoint{}, &aws.EndpointNotFoundError{} + }) + + awsCfg, err := awsconfig.LoadDefaultConfig(appCtx, + awsconfig.WithRegion(region), + awsconfig.WithEndpointResolver(customResolver), + awsconfig.WithCredentialsProvider(credentials), + ) + return awsCfg, err + } + return awsconfig.LoadDefaultConfig(appCtx, awsconfig.WithRegion(region)) } func newFilterFunc(cfg *config.Configuration) queue.FilterConsumeFunc { diff --git a/analytic/go.mod b/analytic/go.mod index 46ecdcd8..abccbdd6 100644 --- a/analytic/go.mod +++ b/analytic/go.mod @@ -6,12 +6,13 @@ require ( github.com/aws/aws-sdk-go-v2 v1.17.4 github.com/aws/aws-sdk-go-v2/config v1.1.1 github.com/aws/aws-sdk-go-v2/credentials v1.1.1 + github.com/go-redis/redis/v8 v8.11.5 github.com/gofiber/fiber/v2 v2.42.0 github.com/influxdata/influxdb-client-go/v2 v2.12.2 github.com/joho/godotenv v1.5.1 github.com/sethvargo/go-envconfig v0.9.0 github.com/wormhole-foundation/wormhole-explorer/common v0.0.0-00010101000000-000000000000 - github.com/wormhole-foundation/wormhole/sdk v0.0.0-20230216153609-bd7406afbfb2 + github.com/wormhole-foundation/wormhole/sdk v0.0.0-20230426150516-e695fad0bed8 go.uber.org/zap v1.24.0 ) @@ -28,8 +29,10 @@ require ( github.com/aws/aws-sdk-go-v2/service/sts v1.1.1 // indirect github.com/aws/smithy-go v1.13.5 // indirect github.com/btcsuite/btcd/btcec/v2 v2.2.0 // indirect + github.com/cespare/xxhash/v2 v2.1.2 // indirect github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1 // indirect github.com/deepmap/oapi-codegen v1.8.2 // indirect + github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect github.com/ethereum/go-ethereum v1.10.21 // indirect github.com/golang/snappy v0.0.4 // indirect github.com/google/uuid v1.3.0 // indirect diff --git a/analytic/go.sum b/analytic/go.sum index 3702e579..d74adc18 100644 --- a/analytic/go.sum +++ b/analytic/go.sum @@ -32,6 +32,8 @@ github.com/benbjohnson/clock v1.1.0 h1:Q92kusRqC1XV2MjkWETPvjJVqKetz1OzxZB7mHJLj github.com/btcsuite/btcd/btcec/v2 v2.2.0 h1:fzn1qaOt32TuLjFlkzYSsBC35Q3KUjT1SwPxiMSCF5k= github.com/btcsuite/btcd/btcec/v2 v2.2.0/go.mod h1:U7MHm051Al6XmscBQ0BoNydpOTsFAn707034b5nY8zU= github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1 h1:q0rUy8C/TYNBQS1+CGKw68tLOFYSNEs0TFnxxnS9+4U= +github.com/cespare/xxhash/v2 v2.1.2 h1:YRXhKfTDauu4ajMg1TPgFO5jnlC2HCbmLXMcTG5cbYE= +github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cyberdelia/templates v0.0.0-20141128023046-ca7fffd4298c/go.mod h1:GyV+0YP4qX0UQ7r2MoYZ+AvYDp12OF5yg4q8rGnyNh4= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= @@ -43,13 +45,18 @@ github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1/go.mod h1:hyedUtir6IdtD/7lIxGeC github.com/deepmap/oapi-codegen v1.8.2 h1:SegyeYGcdi0jLLrpbCMoJxnUUn8GBXHsvr4rbzjuhfU= github.com/deepmap/oapi-codegen v1.8.2/go.mod h1:YLgSKSDv/bZQB7N4ws6luhozi3cEdRktEqrX88CvjIw= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= +github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/rVNCu3HqELle0jiPLLBs70cWOduZpkS1E78= +github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc= github.com/ethereum/go-ethereum v1.10.21 h1:5lqsEx92ZaZzRyOqBEXux4/UR06m296RGzN3ol3teJY= github.com/ethereum/go-ethereum v1.10.21/go.mod h1:EYFyF19u3ezGLD4RqOkLq+ZCXzYbLoNDdZlMt7kyKFg= +github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4= github.com/getkin/kin-openapi v0.61.0/go.mod h1:7Yn5whZr5kJi6t+kShccXS8ae1APpYTW6yheSwk8Yi4= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/go-chi/chi/v5 v5.0.0/go.mod h1:BBug9lr0cqtdAhsu6R4AAdvufI0/XBzAQSsUqJpoZOs= github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= +github.com/go-redis/redis/v8 v8.11.5 h1:AcZZR7igkdvfVmQTPnu9WE37LRrO/YrBH5zWyjDC0oI= +github.com/go-redis/redis/v8 v8.11.5/go.mod h1:gREzHqY1hg6oD9ngVRbLStwAWKhA0FEgq8Jd4h5lpwo= github.com/gofiber/fiber/v2 v2.42.0 h1:Fnp7ybWvS+sjNQsFvkhf4G8OhXswvB6Vee8hM/LyS+8= github.com/gofiber/fiber/v2 v2.42.0/go.mod h1:3+SGNjqMh5VQH5Vz2Wdi43zTIV16ktlFd3x3R6O1Zlc= github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= @@ -102,6 +109,9 @@ github.com/mattn/go-runewidth v0.0.14 h1:+xnbZSEeDbOIg5/mE6JF0w6n9duR1l3/WmbinWV github.com/mattn/go-runewidth v0.0.14/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe h1:iruDEfMl2E6fbMZ9s0scYfZQ84/6SPL6zC8ACM2oIL0= github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe/go.mod h1:wL8QJuTMNUDYhXwkmfOly8iTdp5TEcJFWZD2D7SIkUc= +github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= +github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= +github.com/onsi/gomega v1.18.1 h1:M1GfJqGRrBrrGGsbxzV5dqM2U2ApXefZCQpkukxYRLE= github.com/philhofer/fwd v1.1.1 h1:GdGcTjf5RNAxwS4QLsiMzJYj5KEvPJD3Abr261yRQXQ= github.com/philhofer/fwd v1.1.1/go.mod h1:gk3iGcWd9+svBvR0sR+KPcfE+RNWozjowpeBVG3ZVNU= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= @@ -135,8 +145,8 @@ github.com/valyala/fasttemplate v1.0.1/go.mod h1:UQGH1tvbgY+Nz5t2n7tXsz52dQxojPU github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ= github.com/valyala/tcplisten v1.0.0 h1:rBHj/Xf+E1tRGZyWIWwJDiRY0zc1Js+CV5DqwacVSA8= github.com/valyala/tcplisten v1.0.0/go.mod h1:T0xQ8SeCZGxckz9qRXTfG43PvQ/mcWh7FwZEA7Ioqkc= -github.com/wormhole-foundation/wormhole/sdk v0.0.0-20230216153609-bd7406afbfb2 h1:yTXJ30BamZT4vPTL55TqNn+s64Fk0WdcrXviEjELY8Q= -github.com/wormhole-foundation/wormhole/sdk v0.0.0-20230216153609-bd7406afbfb2/go.mod h1:dE12DOucCq23gjGGGhtbyx41FBxuHxjpPvG+ArO+8t0= +github.com/wormhole-foundation/wormhole/sdk v0.0.0-20230426150516-e695fad0bed8 h1:rrOyHd+H9a6Op1iUyZNCaI5v9D1syq8jDAYyX/2Q4L8= +github.com/wormhole-foundation/wormhole/sdk v0.0.0-20230426150516-e695fad0bed8/go.mod h1:dE12DOucCq23gjGGGhtbyx41FBxuHxjpPvG+ArO+8t0= github.com/xdg-go/pbkdf2 v1.0.0 h1:Su7DPu48wXMwC3bs7MCNG+z4FhcyEuz5dlvchbq0B0c= github.com/xdg-go/pbkdf2 v1.0.0/go.mod h1:jrpuAogTd400dnrH08LKmI/xc1MbPOebTwRqcT5RDeI= github.com/xdg-go/scram v1.1.1 h1:VOMT+81stJgXW3CpHyqHN3AXDYIMsx56mEFrB37Mb/E= @@ -214,9 +224,11 @@ golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/deploy/analytic/analytic-service.yaml b/deploy/analytic/analytic-service.yaml index e63bb2c8..bf566eec 100644 --- a/deploy/analytic/analytic-service.yaml +++ b/deploy/analytic/analytic-service.yaml @@ -1,4 +1,3 @@ ---- apiVersion: apps/v1 kind: Deployment metadata: @@ -16,6 +15,7 @@ spec: spec: restartPolicy: Always terminationGracePeriodSeconds: 40 + serviceAccountName: analytic containers: - name: {{ .NAME }} image: {{ .IMAGE_NAME }} @@ -47,16 +47,6 @@ spec: value: {{ .SQS_URL }} - name: AWS_REGION value: {{ .SQS_AWS_REGION }} - - name: AWS_ACCESS_KEY_ID - valueFrom: - secretKeyRef: - name: analytic-sqs - key: aws-access-key-id - - name: AWS_SECRET_ACCESS_KEY - valueFrom: - secretKeyRef: - name: analytic-sqs - key: aws-secret-access-key - name: PPROF_ENABLED value: "{{ .PPROF_ENABLED }}" - name: P2P_NETWORK diff --git a/deploy/analytic/env/production.env b/deploy/analytic/env/production.env index 07cf87c2..23c75fb7 100644 --- a/deploy/analytic/env/production.env +++ b/deploy/analytic/env/production.env @@ -9,7 +9,6 @@ RESOURCES_REQUESTS_MEMORY=128Mi RESOURCES_REQUESTS_CPU=250m SQS_URL= SQS_AWS_REGION= -SQS_ACCESS_KEY_ID= -SQS_SECRET_ACCESS_KEY= P2P_NETWORK=mainnet PPROF_ENABLED=false +AWS_IAM_ROLE= \ No newline at end of file diff --git a/deploy/analytic/env/staging.env b/deploy/analytic/env/staging.env index 4625f35a..c5053bea 100644 --- a/deploy/analytic/env/staging.env +++ b/deploy/analytic/env/staging.env @@ -9,7 +9,6 @@ RESOURCES_REQUESTS_MEMORY=15Mi RESOURCES_REQUESTS_CPU=10m SQS_URL= SQS_AWS_REGION= -SQS_ACCESS_KEY_ID= -SQS_SECRET_ACCESS_KEY= P2P_NETWORK=mainnet PPROF_ENABLED=true +AWS_IAM_ROLE= \ No newline at end of file diff --git a/deploy/analytic/env/test.env b/deploy/analytic/env/test.env index 8ee020aa..a1f196b2 100644 --- a/deploy/analytic/env/test.env +++ b/deploy/analytic/env/test.env @@ -9,7 +9,6 @@ RESOURCES_REQUESTS_MEMORY=64Mi RESOURCES_REQUESTS_CPU=100m SQS_URL= SQS_AWS_REGION= -SQS_ACCESS_KEY_ID= -SQS_SECRET_ACCESS_KEY= P2P_NETWORK=testnet PPROF_ENABLED=false +AWS_IAM_ROLE= \ No newline at end of file diff --git a/deploy/analytic/sa.yaml b/deploy/analytic/sa.yaml new file mode 100644 index 00000000..c5633cd6 --- /dev/null +++ b/deploy/analytic/sa.yaml @@ -0,0 +1,7 @@ +apiVersion: v1 +kind: ServiceAccount +metadata: + name: analytic + namespace: {{ .NAMESPACE }} + annotations: + eks.amazonaws.com/role-arn: {{ .AWS_IAM_ROLE }} diff --git a/deploy/analytic/secrets.yaml b/deploy/analytic/secrets.yaml deleted file mode 100644 index b7f3c6c4..00000000 --- a/deploy/analytic/secrets.yaml +++ /dev/null @@ -1,11 +0,0 @@ ---- -kind: Secret -apiVersion: v1 -metadata: - name: analytic-sqs - namespace: {{ .NAMESPACE }} -data: - aws-access-key-id: {{ .SQS_ACCESS_KEY_ID }} - aws-secret-access-key: {{ .SQS_SECRET_ACCESS_KEY }} - -type: Opaque \ No newline at end of file diff --git a/deploy/fly/env/production.env b/deploy/fly/env/production.env index b30823c5..87473a37 100644 --- a/deploy/fly/env/production.env +++ b/deploy/fly/env/production.env @@ -9,8 +9,7 @@ RESOURCES_REQUESTS_MEMORY=384Mi RESOURCES_REQUESTS_CPU=250m SQS_URL= SQS_AWS_REGION= -SQS_ACCESS_KEY_ID= -SQS_SECRET_ACCESS_KEY= P2P_NETWORK=mainnet PPROF_ENABLED=false -MAX_HEALTH_TIME_SECONDS=90 \ No newline at end of file +MAX_HEALTH_TIME_SECONDS=90 +AWS_IAM_ROLE= \ No newline at end of file diff --git a/deploy/fly/env/staging.env b/deploy/fly/env/staging.env index b38d3216..99aaa743 100644 --- a/deploy/fly/env/staging.env +++ b/deploy/fly/env/staging.env @@ -9,8 +9,7 @@ RESOURCES_REQUESTS_MEMORY=384Mi RESOURCES_REQUESTS_CPU=500m SQS_URL= SQS_AWS_REGION= -SQS_ACCESS_KEY_ID= -SQS_SECRET_ACCESS_KEY= P2P_NETWORK=mainnet PPROF_ENABLED=true -MAX_HEALTH_TIME_SECONDS=90 \ No newline at end of file +MAX_HEALTH_TIME_SECONDS=90 +AWS_IAM_ROLE= \ No newline at end of file diff --git a/deploy/fly/env/test.env b/deploy/fly/env/test.env index d0d9967a..fa0f449e 100644 --- a/deploy/fly/env/test.env +++ b/deploy/fly/env/test.env @@ -9,8 +9,7 @@ RESOURCES_REQUESTS_MEMORY=128Mi RESOURCES_REQUESTS_CPU=250m SQS_URL= SQS_AWS_REGION= -SQS_ACCESS_KEY_ID= -SQS_SECRET_ACCESS_KEY= P2P_NETWORK=testnet PPROF_ENABLED=false -MAX_HEALTH_TIME_SECONDS=300 \ No newline at end of file +MAX_HEALTH_TIME_SECONDS=300 +AWS_IAM_ROLE= \ No newline at end of file diff --git a/deploy/fly/fly-service.yaml b/deploy/fly/fly-service.yaml index aeaf8cf2..a3b75380 100644 --- a/deploy/fly/fly-service.yaml +++ b/deploy/fly/fly-service.yaml @@ -1,4 +1,3 @@ ---- apiVersion: apps/v1 kind: Deployment metadata: @@ -16,6 +15,7 @@ spec: spec: restartPolicy: Always terminationGracePeriodSeconds: 40 + serviceAccountName: fly containers: - name: {{ .NAME }} image: {{ .IMAGE_NAME }} @@ -57,16 +57,6 @@ spec: value: {{ .SQS_URL }} - name: AWS_REGION value: {{ .SQS_AWS_REGION }} - - name: AWS_ACCESS_KEY_ID - valueFrom: - secretKeyRef: - name: fly-sqs - key: aws-access-key-id - - name: AWS_SECRET_ACCESS_KEY - valueFrom: - secretKeyRef: - name: fly-sqs - key: aws-secret-access-key - name: REDIS_URI valueFrom: configMapKeyRef: diff --git a/deploy/fly/sa.yaml b/deploy/fly/sa.yaml new file mode 100644 index 00000000..c2746eee --- /dev/null +++ b/deploy/fly/sa.yaml @@ -0,0 +1,7 @@ +apiVersion: v1 +kind: ServiceAccount +metadata: + name: fly + namespace: {{ .NAMESPACE }} + annotations: + eks.amazonaws.com/role-arn: {{ .AWS_IAM_ROLE }} diff --git a/deploy/fly/secrets.yaml b/deploy/fly/secrets.yaml deleted file mode 100644 index 61ef8afa..00000000 --- a/deploy/fly/secrets.yaml +++ /dev/null @@ -1,11 +0,0 @@ ---- -kind: Secret -apiVersion: v1 -metadata: - name: fly-sqs - namespace: {{ .NAMESPACE }} -data: - aws-access-key-id: {{ .SQS_ACCESS_KEY_ID }} - aws-secret-access-key: {{ .SQS_SECRET_ACCESS_KEY }} - -type: Opaque \ No newline at end of file diff --git a/deploy/parser/env/production.env b/deploy/parser/env/production.env index 53bc340c..f21c8882 100644 --- a/deploy/parser/env/production.env +++ b/deploy/parser/env/production.env @@ -9,9 +9,8 @@ RESOURCES_REQUESTS_MEMORY=128Mi RESOURCES_REQUESTS_CPU=250m SQS_URL= SQS_AWS_REGION= -SQS_ACCESS_KEY_ID= -SQS_SECRET_ACCESS_KEY= VAA_PAYLOAD_PARSER_URL=http://wormscan-vaa-payload-parser.wormscan VAA_PAYLOAD_PARSER_TIMEOUT=10 P2P_NETWORK=mainnet -PPROF_ENABLED=false \ No newline at end of file +PPROF_ENABLED=false +AWS_IAM_ROLE= \ No newline at end of file diff --git a/deploy/parser/env/staging.env b/deploy/parser/env/staging.env index 796f3c7d..2e75ff8d 100644 --- a/deploy/parser/env/staging.env +++ b/deploy/parser/env/staging.env @@ -9,9 +9,8 @@ RESOURCES_REQUESTS_MEMORY=15Mi RESOURCES_REQUESTS_CPU=10m SQS_URL= SQS_AWS_REGION= -SQS_ACCESS_KEY_ID= -SQS_SECRET_ACCESS_KEY= VAA_PAYLOAD_PARSER_URL=http://wormscan-vaa-payload-parser.wormscan VAA_PAYLOAD_PARSER_TIMEOUT=10 P2P_NETWORK=mainnet -PPROF_ENABLED=true \ No newline at end of file +PPROF_ENABLED=true +AWS_IAM_ROLE= \ No newline at end of file diff --git a/deploy/parser/env/test.env b/deploy/parser/env/test.env index a6370d2b..32510515 100644 --- a/deploy/parser/env/test.env +++ b/deploy/parser/env/test.env @@ -9,9 +9,8 @@ RESOURCES_REQUESTS_MEMORY=15Mi RESOURCES_REQUESTS_CPU=10m SQS_URL= SQS_AWS_REGION= -SQS_ACCESS_KEY_ID= -SQS_SECRET_ACCESS_KEY= VAA_PAYLOAD_PARSER_URL=http://wormscan-vaa-payload-parser.wormscan-testnet VAA_PAYLOAD_PARSER_TIMEOUT=10 P2P_NETWORK=testnet PPROF_ENABLED=false +AWS_IAM_ROLE= diff --git a/deploy/parser/parser-service.yaml b/deploy/parser/parser-service.yaml index 24caf0ab..66ed55fe 100644 --- a/deploy/parser/parser-service.yaml +++ b/deploy/parser/parser-service.yaml @@ -1,4 +1,3 @@ ---- apiVersion: apps/v1 kind: Deployment metadata: @@ -16,6 +15,7 @@ spec: spec: restartPolicy: Always terminationGracePeriodSeconds: 40 + serviceAccountName: parser containers: - name: {{ .NAME }} image: {{ .IMAGE_NAME }} @@ -57,16 +57,6 @@ spec: value: {{ .SQS_URL }} - name: AWS_REGION value: {{ .SQS_AWS_REGION }} - - name: AWS_ACCESS_KEY_ID - valueFrom: - secretKeyRef: - name: parser-sqs - key: aws-access-key-id - - name: AWS_SECRET_ACCESS_KEY - valueFrom: - secretKeyRef: - name: parser-sqs - key: aws-secret-access-key - name: VAA_PAYLOAD_PARSER_URL value: {{ .VAA_PAYLOAD_PARSER_URL }} - name: VAA_PAYLOAD_PARSER_TIMEOUT @@ -75,26 +65,6 @@ spec: value: "{{ .PPROF_ENABLED }}" - name: P2P_NETWORK value: {{ .P2P_NETWORK }} - - name: INFLUX_URL - valueFrom: - configMapKeyRef: - name: config - key: influxdb-url - - name: INFLUX_TOKEN - valueFrom: - secretKeyRef: - name: influxdb - key: token - - name: INFLUX_ORGANIZATION - valueFrom: - configMapKeyRef: - name: config - key: influxdb-organization - - name: INFLUX_BUCKET - valueFrom: - configMapKeyRef: - name: config - key: influxdb-bucket resources: limits: memory: {{ .RESOURCES_LIMITS_MEMORY }} diff --git a/deploy/parser/sa.yaml b/deploy/parser/sa.yaml new file mode 100644 index 00000000..9781a1fc --- /dev/null +++ b/deploy/parser/sa.yaml @@ -0,0 +1,7 @@ +apiVersion: v1 +kind: ServiceAccount +metadata: + name: parser + namespace: {{ .NAMESPACE }} + annotations: + eks.amazonaws.com/role-arn: {{ .AWS_IAM_ROLE }} diff --git a/deploy/parser/secrets.yaml b/deploy/parser/secrets.yaml deleted file mode 100644 index 617578be..00000000 --- a/deploy/parser/secrets.yaml +++ /dev/null @@ -1,11 +0,0 @@ ---- -kind: Secret -apiVersion: v1 -metadata: - name: parser-sqs - namespace: {{ .NAMESPACE }} -data: - aws-access-key-id: {{ .SQS_ACCESS_KEY_ID }} - aws-secret-access-key: {{ .SQS_SECRET_ACCESS_KEY }} - -type: Opaque \ No newline at end of file diff --git a/deploy/pipeline/pipeline-service.yaml b/deploy/pipeline/pipeline-service.yaml index 7ee22edd..31407ace 100644 --- a/deploy/pipeline/pipeline-service.yaml +++ b/deploy/pipeline/pipeline-service.yaml @@ -1,11 +1,3 @@ -apiVersion: v1 -kind: ServiceAccount -metadata: - name: pipeline - namespace: {{ .NAMESPACE }} - annotations: - eks.amazonaws.com/role-arn: {{ .AWS_IAM_ROLE }} ---- apiVersion: apps/v1 kind: Deployment metadata: diff --git a/deploy/pipeline/sa.yaml b/deploy/pipeline/sa.yaml new file mode 100644 index 00000000..475c1dd1 --- /dev/null +++ b/deploy/pipeline/sa.yaml @@ -0,0 +1,7 @@ +apiVersion: v1 +kind: ServiceAccount +metadata: + name: pipeline + namespace: {{ .NAMESPACE }} + annotations: + eks.amazonaws.com/role-arn: {{ .AWS_IAM_ROLE }} diff --git a/deploy/tx-tracker/env/production.env b/deploy/tx-tracker/env/production.env index 6b04a862..a02bd375 100644 --- a/deploy/tx-tracker/env/production.env +++ b/deploy/tx-tracker/env/production.env @@ -9,9 +9,8 @@ RESOURCES_REQUESTS_MEMORY=128Mi RESOURCES_REQUESTS_CPU=250m SQS_URL= SQS_AWS_REGION= -SQS_ACCESS_KEY_ID= -SQS_SECRET_ACCESS_KEY= VAA_PAYLOAD_PARSER_URL=http://wormscan-vaa-payload-parser.wormscan VAA_PAYLOAD_PARSER_TIMEOUT=10 SOLANA_BASE_URL=https://api.mainnet-beta.solana.com SOLANA_REQUESTS_PER_MINUTE=6 +AWS_IAM_ROLE= diff --git a/deploy/tx-tracker/env/staging.env b/deploy/tx-tracker/env/staging.env index 496a382a..ee42b76a 100644 --- a/deploy/tx-tracker/env/staging.env +++ b/deploy/tx-tracker/env/staging.env @@ -9,11 +9,10 @@ RESOURCES_REQUESTS_MEMORY=15Mi RESOURCES_REQUESTS_CPU=40m SQS_URL= SQS_AWS_REGION= -SQS_ACCESS_KEY_ID= -SQS_SECRET_ACCESS_KEY= VAA_PAYLOAD_PARSER_URL=http://wormscan-vaa-payload-parser.wormscan VAA_PAYLOAD_PARSER_TIMEOUT=10 SOLANA_BASE_URL=https://api.mainnet-beta.solana.com -SOLANA_REQUESTS_PER_MINUTE=6 \ No newline at end of file +SOLANA_REQUESTS_PER_MINUTE=6 +AWS_IAM_ROLE= \ No newline at end of file diff --git a/deploy/tx-tracker/env/test.env b/deploy/tx-tracker/env/test.env index 1c9ce279..a63b7f50 100644 --- a/deploy/tx-tracker/env/test.env +++ b/deploy/tx-tracker/env/test.env @@ -9,9 +9,8 @@ RESOURCES_REQUESTS_MEMORY=15Mi RESOURCES_REQUESTS_CPU=10m SQS_URL= SQS_AWS_REGION= -SQS_ACCESS_KEY_ID= -SQS_SECRET_ACCESS_KEY= VAA_PAYLOAD_PARSER_URL=http://wormscan-vaa-payload-parser.wormscan-testnet VAA_PAYLOAD_PARSER_TIMEOUT=10 SOLANA_BASE_URL=https://api.devnet.solana.com -SOLANA_REQUESTS_PER_MINUTE=6 \ No newline at end of file +SOLANA_REQUESTS_PER_MINUTE=6 +AWS_IAM_ROLE= \ No newline at end of file diff --git a/deploy/tx-tracker/sa.yaml b/deploy/tx-tracker/sa.yaml new file mode 100644 index 00000000..0601f38c --- /dev/null +++ b/deploy/tx-tracker/sa.yaml @@ -0,0 +1,7 @@ +apiVersion: v1 +kind: ServiceAccount +metadata: + name: tx-tracker + namespace: {{ .NAMESPACE }} + annotations: + eks.amazonaws.com/role-arn: {{ .AWS_IAM_ROLE }} \ No newline at end of file diff --git a/deploy/tx-tracker/secrets.yaml b/deploy/tx-tracker/secrets.yaml deleted file mode 100644 index 9384efed..00000000 --- a/deploy/tx-tracker/secrets.yaml +++ /dev/null @@ -1,11 +0,0 @@ ---- -kind: Secret -apiVersion: v1 -metadata: - name: tx-tracker-sqs - namespace: {{ .NAMESPACE }} -data: - aws-access-key-id: {{ .SQS_ACCESS_KEY_ID }} - aws-secret-access-key: {{ .SQS_SECRET_ACCESS_KEY }} - -type: Opaque diff --git a/deploy/tx-tracker/tx-tracker-service.yaml b/deploy/tx-tracker/tx-tracker-service.yaml index f46a1a1d..ed223f36 100644 --- a/deploy/tx-tracker/tx-tracker-service.yaml +++ b/deploy/tx-tracker/tx-tracker-service.yaml @@ -1,4 +1,3 @@ ---- apiVersion: apps/v1 kind: Deployment metadata: @@ -16,6 +15,7 @@ spec: spec: restartPolicy: Always terminationGracePeriodSeconds: 40 + serviceAccountName: tx-tracker containers: - name: {{ .NAME }} image: {{ .IMAGE_NAME }} @@ -57,16 +57,6 @@ spec: value: {{ .SQS_URL }} - name: AWS_REGION value: {{ .SQS_AWS_REGION }} - - name: AWS_ACCESS_KEY_ID - valueFrom: - secretKeyRef: - name: tx-tracker-sqs - key: aws-access-key-id - - name: AWS_SECRET_ACCESS_KEY - valueFrom: - secretKeyRef: - name: tx-tracker-sqs - key: aws-secret-access-key - name: VAA_PAYLOAD_PARSER_URL value: {{ .VAA_PAYLOAD_PARSER_URL }} - name: VAA_PAYLOAD_PARSER_TIMEOUT diff --git a/fly/go.mod b/fly/go.mod index 0e2f4ad1..3d76bf7b 100644 --- a/fly/go.mod +++ b/fly/go.mod @@ -3,7 +3,10 @@ module github.com/wormhole-foundation/wormhole-explorer/fly go 1.19 require ( - github.com/aws/aws-sdk-go v1.44.133 + github.com/aws/aws-sdk-go-v2 v1.18.0 + github.com/aws/aws-sdk-go-v2/config v1.1.1 + github.com/aws/aws-sdk-go-v2/credentials v1.1.1 + github.com/aws/aws-sdk-go-v2/service/sqs v1.20.2 github.com/certusone/wormhole/node v0.0.0-20230315165931-62bef9ffb441 github.com/dgraph-io/ristretto v0.1.1 github.com/eko/gocache/v3 v3.1.2 @@ -14,13 +17,21 @@ require ( github.com/libp2p/go-libp2p-core v0.20.0 github.com/patrickmn/go-cache v2.1.0+incompatible github.com/stretchr/testify v1.8.1 - github.com/wormhole-foundation/wormhole/sdk v0.0.0-20230315165931-62bef9ffb441 + github.com/wormhole-foundation/wormhole/sdk v0.0.0-20230426150516-e695fad0bed8 go.mongodb.org/mongo-driver v1.11.2 go.uber.org/zap v1.24.0 google.golang.org/protobuf v1.28.2-0.20220831092852-f930b1dc76e8 ) require ( + github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.0.2 // indirect + github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.28 // indirect + github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.22 // indirect + github.com/aws/aws-sdk-go-v2/internal/ini v1.3.34 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.0.2 // indirect + github.com/aws/aws-sdk-go-v2/service/sso v1.1.1 // indirect + github.com/aws/aws-sdk-go-v2/service/sts v1.1.1 // indirect + github.com/aws/smithy-go v1.13.5 // indirect github.com/cosmos/cosmos-proto v1.0.0-alpha8 // indirect github.com/cosmos/gogoproto v1.4.3 // indirect github.com/cosmos/ibc-go/v4 v4.2.0 // indirect @@ -127,7 +138,6 @@ require ( github.com/jackpal/go-nat-pmp v1.0.2 // indirect github.com/jbenet/go-temp-err-catcher v0.1.0 // indirect github.com/jbenet/goprocess v0.1.4 // indirect - github.com/jmespath/go-jmespath v0.4.0 // indirect github.com/jmhodges/levigo v1.0.0 // indirect github.com/klauspost/compress v1.15.11 // indirect github.com/klauspost/cpuid/v2 v2.1.0 // indirect diff --git a/fly/go.sum b/fly/go.sum index a6d370eb..2dba203c 100644 --- a/fly/go.sum +++ b/fly/go.sum @@ -647,21 +647,38 @@ github.com/aws/aws-sdk-go v1.27.1/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN github.com/aws/aws-sdk-go v1.31.6/go.mod h1:5zCpMtNQVjRREroY7sYe8lOMRSxkhG6MZveU8YkpAk0= github.com/aws/aws-sdk-go v1.36.30/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2zKMmprdro= github.com/aws/aws-sdk-go v1.40.45/go.mod h1:585smgzpB/KqRA+K3y/NL/oYRqQvpNJYvLm+LY1U59Q= -github.com/aws/aws-sdk-go v1.44.133 h1:+pWxt9nyKc0jf33rORBaQ93KPjYpmIIy3ozVXdJ82Oo= -github.com/aws/aws-sdk-go v1.44.133/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g= github.com/aws/aws-sdk-go-v2 v1.2.0/go.mod h1:zEQs02YRBw1DjK0PoJv3ygDYOFTre1ejlJWl8FwAuQo= github.com/aws/aws-sdk-go-v2 v1.9.1/go.mod h1:cK/D0BBs0b/oWPIcX/Z/obahJK1TT7IPVjy53i/mX/4= +github.com/aws/aws-sdk-go-v2 v1.17.4/go.mod h1:uzbQtefpm44goOPmdKyAlXSNcwlRgF3ePWVW6EtJvvw= +github.com/aws/aws-sdk-go-v2 v1.18.0 h1:882kkTpSFhdgYRKVZ/VCgf7sd0ru57p2JCxz4/oN5RY= +github.com/aws/aws-sdk-go-v2 v1.18.0/go.mod h1:uzbQtefpm44goOPmdKyAlXSNcwlRgF3ePWVW6EtJvvw= +github.com/aws/aws-sdk-go-v2/config v1.1.1 h1:ZAoq32boMzcaTW9bcUacBswAmHTbvlvDJICgHFZuECo= github.com/aws/aws-sdk-go-v2/config v1.1.1/go.mod h1:0XsVy9lBI/BCXm+2Tuvt39YmdHwS5unDQmxZOYe8F5Y= +github.com/aws/aws-sdk-go-v2/credentials v1.1.1 h1:NbvWIM1Mx6sNPTxowHgS2ewXCRp+NGTzUYb/96FZJbY= github.com/aws/aws-sdk-go-v2/credentials v1.1.1/go.mod h1:mM2iIjwl7LULWtS6JCACyInboHirisUUdkBPoTHMOUo= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.0.2 h1:EtEU7WRaWliitZh2nmuxEXrN0Cb8EgPUFGIoTMeqbzI= github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.0.2/go.mod h1:3hGg3PpiEjHnrkrlasTfxFqUsZ2GCk/fMUn4CbKgSkM= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.28 h1:r+XwaCLpIvCKjBIYy/HVZujQS9tsz5ohHG3ZIe0wKoE= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.28/go.mod h1:3lwChorpIM/BhImY/hy+Z6jekmN92cXGPI1QJasVPYY= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.22 h1:7AwGYXDdqRQYsluvKFmWoqpcOQJ4bH634SkYf3FNj/A= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.22/go.mod h1:EqK7gVrIGAHyZItrD1D8B0ilgwMD1GiWAmbU4u/JHNk= +github.com/aws/aws-sdk-go-v2/internal/ini v1.3.34 h1:gGLG7yKaXG02/jBlg210R7VgQIotiQntNhsCFejawx8= +github.com/aws/aws-sdk-go-v2/internal/ini v1.3.34/go.mod h1:Etz2dj6UHYuw+Xw830KfzCfWGMzqvUTCjUj5b76GVDc= github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.8.1/go.mod h1:CM+19rL1+4dFWnOQKwDc7H1KwXTz+h61oUSHyhV0b3o= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.0.2 h1:4AH9fFjUlVktQMznF+YN33aWNXaR4VgDXyP28qokJC0= github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.0.2/go.mod h1:45MfaXZ0cNbeuT0KQ1XJylq8A6+OpVV2E5kvY/Kq+u8= github.com/aws/aws-sdk-go-v2/service/route53 v1.1.1/go.mod h1:rLiOUrPLW/Er5kRcQ7NkwbjlijluLsrIbu/iyl35RO4= +github.com/aws/aws-sdk-go-v2/service/sqs v1.20.2 h1:CSNIo1jiw7KrkdgZjCOnotu6yuB3IybhKLuSQrTLNfo= +github.com/aws/aws-sdk-go-v2/service/sqs v1.20.2/go.mod h1:1ttxGjUHZliCQMpPss1sU5+Ph/5NvdMFRzr96bv8gm0= +github.com/aws/aws-sdk-go-v2/service/sso v1.1.1 h1:37QubsarExl5ZuCBlnRP+7l1tNwZPBSTqpTBrPH98RU= github.com/aws/aws-sdk-go-v2/service/sso v1.1.1/go.mod h1:SuZJxklHxLAXgLTc1iFXbEWkXs7QRTQpCLGaKIprQW0= +github.com/aws/aws-sdk-go-v2/service/sts v1.1.1 h1:TJoIfnIFubCX0ACVeJ0w46HEH5MwjwYN4iFhuYIhfIY= github.com/aws/aws-sdk-go-v2/service/sts v1.1.1/go.mod h1:Wi0EBZwiz/K44YliU0EKxqTCJGUfYTWXrrBwkq736bM= github.com/aws/smithy-go v1.1.0/go.mod h1:EzMw8dbp/YJL4A5/sbhGddag+NPT7q084agLbB9LgIw= github.com/aws/smithy-go v1.8.0/go.mod h1:SObp3lf9smib00L/v3U2eAKG8FyQ7iLrJnQiAmR5n+E= +github.com/aws/smithy-go v1.13.5 h1:hgz0X/DX0dGqTYpGALqXJoRKRj5oQ7150i5FdTePzO8= +github.com/aws/smithy-go v1.13.5/go.mod h1:Tg+OJXh4MB2R/uN61Ko2f6hTZwB/ZYGOtib8J3gBHzA= github.com/aybabtme/rgbterm v0.0.0-20170906152045-cc83f3b3ce59/go.mod h1:q/89r3U2H7sSsE2t6Kca0lfwTK8JdoNGS/yzM/4iH5I= github.com/benbjohnson/clock v1.0.3/go.mod h1:bGMdMPoPVvcYyt1gHDf4J2KE153Yf9BuiUKYMaxlTDM= github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= @@ -1845,9 +1862,7 @@ github.com/jmespath/go-jmespath v0.0.0-20160202185014-0b12d6b521d8/go.mod h1:Nht github.com/jmespath/go-jmespath v0.0.0-20160803190731-bd40a432e4c7/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= github.com/jmespath/go-jmespath v0.3.0/go.mod h1:9QtRXoHjLGCJ5IBSaohpXITPlowMeeYCZ7fLUTSywik= -github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg= github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= -github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8= github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= github.com/jmhodges/levigo v1.0.0 h1:q5EC36kV79HWeTBWsod3mG11EgStG3qArTKcvlksN1U= github.com/jmhodges/levigo v1.0.0/go.mod h1:Q6Qx+uH3RAqyK4rFQroq9RL7mdkABMcfhEI+nNuzMJQ= @@ -3006,8 +3021,8 @@ github.com/wormhole-foundation/cosmos-sdk v0.45.9-wormhole/go.mod h1:Z5M4TX7PsHN github.com/wormhole-foundation/wasmd v0.30.0-wormchain-1 h1:1+u753gKU44slOOLNdk7LiE5QtZU+3joVuQuU2xW1Bg= github.com/wormhole-foundation/wasmd v0.30.0-wormchain-1/go.mod h1:BcwmiI8b2fR2MGioz3HeVvON5QjSDfrnUbGu0gKRk5U= github.com/wormhole-foundation/wormhole/sdk v0.0.0-20220926172624-4b38dc650bb0/go.mod h1:Vg7Cbb370S+JihB+of1rWm9Aaxzf0GPPvKszPeSb7AE= -github.com/wormhole-foundation/wormhole/sdk v0.0.0-20230315165931-62bef9ffb441 h1:ZSB93rvaWarOv/TTJp1wicIygQLNx6fZhgsmxDBAnO0= -github.com/wormhole-foundation/wormhole/sdk v0.0.0-20230315165931-62bef9ffb441/go.mod h1:dE12DOucCq23gjGGGhtbyx41FBxuHxjpPvG+ArO+8t0= +github.com/wormhole-foundation/wormhole/sdk v0.0.0-20230426150516-e695fad0bed8 h1:rrOyHd+H9a6Op1iUyZNCaI5v9D1syq8jDAYyX/2Q4L8= +github.com/wormhole-foundation/wormhole/sdk v0.0.0-20230426150516-e695fad0bed8/go.mod h1:dE12DOucCq23gjGGGhtbyx41FBxuHxjpPvG+ArO+8t0= github.com/wsddn/go-ecdh v0.0.0-20161211032359-48726bab9208/go.mod h1:IotVbo4F+mw0EzQ08zFqg7pK3FebNXpaMsRy2RT+Ees= github.com/xanzy/go-gitlab v0.31.0/go.mod h1:sPLojNBn68fMUWSxIJtdVVIP8uSBYqesTfDUseX11Ug= github.com/xanzy/go-gitlab v0.32.0/go.mod h1:sPLojNBn68fMUWSxIJtdVVIP8uSBYqesTfDUseX11Ug= diff --git a/fly/internal/sqs/sqs_consumer.go b/fly/internal/sqs/sqs_consumer.go index 65a5b626..bdf3234c 100644 --- a/fly/internal/sqs/sqs_consumer.go +++ b/fly/internal/sqs/sqs_consumer.go @@ -1,12 +1,12 @@ package sqs import ( + "context" "time" - "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/aws/session" - aws_sqs "github.com/aws/aws-sdk-go/service/sqs" - "github.com/aws/aws-sdk-go/service/sqs/sqsiface" + "github.com/aws/aws-sdk-go-v2/aws" + aws_sqs "github.com/aws/aws-sdk-go-v2/service/sqs" + aws_sqs_types "github.com/aws/aws-sdk-go-v2/service/sqs/types" ) // ConsumerOption represents a consumer option function. @@ -14,21 +14,21 @@ type ConsumerOption func(*Consumer) // Consumer represents SQS consumer. type Consumer struct { - api sqsiface.SQSAPI + api *aws_sqs.Client url string - maxMessages *int64 - visibilityTimeout *int64 - waitTimeSeconds *int64 + maxMessages int32 + visibilityTimeout int32 + waitTimeSeconds int32 } // New instances of a Consumer to consume SQS messages. -func NewConsumer(sess *session.Session, url string, opts ...ConsumerOption) (*Consumer, error) { +func NewConsumer(cfg aws.Config, url string, opts ...ConsumerOption) (*Consumer, error) { consumer := &Consumer{ - api: aws_sqs.New(sess), + api: aws_sqs.NewFromConfig(cfg), url: url, - maxMessages: aws.Int64(10), - visibilityTimeout: aws.Int64(60), - waitTimeSeconds: aws.Int64(20), + maxMessages: *aws.Int32(10), + visibilityTimeout: *aws.Int32(60), + waitTimeSeconds: *aws.Int32(20), } for _, opt := range opts { @@ -39,42 +39,42 @@ func NewConsumer(sess *session.Session, url string, opts ...ConsumerOption) (*Co } // WithMaxMessages allows to specify an maximum number of messages to return when setting a value. -func WithMaxMessages(v int64) ConsumerOption { +func WithMaxMessages(v int32) ConsumerOption { return func(c *Consumer) { - c.maxMessages = aws.Int64(v) + c.maxMessages = *aws.Int32(v) } } // WithVisibilityTimeout allows to specify a visibility timeout when setting a value. -func WithVisibilityTimeout(v int64) ConsumerOption { +func WithVisibilityTimeout(v int32) ConsumerOption { return func(c *Consumer) { - c.visibilityTimeout = aws.Int64(v) + c.visibilityTimeout = *aws.Int32(v) } } // WithWaitTimeSeconds allows to specify a wait time when setting a value. -func WithWaitTimeSeconds(v int64) ConsumerOption { +func WithWaitTimeSeconds(v int32) ConsumerOption { return func(c *Consumer) { - c.waitTimeSeconds = aws.Int64(v) + c.waitTimeSeconds = *aws.Int32(v) } } // GetMessages retrieves messages from SQS. -func (c *Consumer) GetMessages() ([]*aws_sqs.Message, error) { +func (c *Consumer) GetMessages(ctx context.Context) ([]aws_sqs_types.Message, error) { params := &aws_sqs.ReceiveMessageInput{ QueueUrl: aws.String(c.url), MaxNumberOfMessages: c.maxMessages, - AttributeNames: []*string{ - aws.String("All"), + AttributeNames: []aws_sqs_types.QueueAttributeName{ + aws_sqs_types.QueueAttributeNameAll, }, - MessageAttributeNames: []*string{ - aws.String("All"), + MessageAttributeNames: []string{ + string(aws_sqs_types.QueueAttributeNameAll), }, WaitTimeSeconds: c.waitTimeSeconds, VisibilityTimeout: c.visibilityTimeout, } - res, err := c.api.ReceiveMessage(params) + res, err := c.api.ReceiveMessage(ctx, params) if err != nil { return nil, err } @@ -83,28 +83,28 @@ func (c *Consumer) GetMessages() ([]*aws_sqs.Message, error) { } // DeleteMessage deletes messages from SQS. -func (c *Consumer) DeleteMessage(id *string) error { +func (c *Consumer) DeleteMessage(ctx context.Context, id *string) error { params := &aws_sqs.DeleteMessageInput{ QueueUrl: aws.String(c.url), ReceiptHandle: id, } - _, err := c.api.DeleteMessage(params) + _, err := c.api.DeleteMessage(ctx, params) return err } // GetVisibilityTimeout returns visibility timeout. func (c *Consumer) GetVisibilityTimeout() time.Duration { - return time.Duration(*c.visibilityTimeout * int64(time.Second)) + return time.Duration(int64(c.visibilityTimeout) * int64(time.Second)) } // GetQueueAttributes get queue attributes. -func (c *Consumer) GetQueueAttributes() (*aws_sqs.GetQueueAttributesOutput, error) { +func (c *Consumer) GetQueueAttributes(ctx context.Context) (*aws_sqs.GetQueueAttributesOutput, error) { params := &aws_sqs.GetQueueAttributesInput{ QueueUrl: aws.String(c.url), - AttributeNames: []*string{ - aws.String("CreatedTimestamp"), + AttributeNames: []aws_sqs_types.QueueAttributeName{ + aws_sqs_types.QueueAttributeNameCreatedTimestamp, }, } - return c.api.GetQueueAttributes(params) + return c.api.GetQueueAttributes(ctx, params) } diff --git a/fly/internal/sqs/sqs_producer.go b/fly/internal/sqs/sqs_producer.go index b4f0526f..db71727e 100644 --- a/fly/internal/sqs/sqs_producer.go +++ b/fly/internal/sqs/sqs_producer.go @@ -1,28 +1,29 @@ package sqs import ( - "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/aws/session" - aws_sqs "github.com/aws/aws-sdk-go/service/sqs" - "github.com/aws/aws-sdk-go/service/sqs/sqsiface" + "context" + + "github.com/aws/aws-sdk-go-v2/aws" + aws_sqs "github.com/aws/aws-sdk-go-v2/service/sqs" ) type Producer struct { - api sqsiface.SQSAPI + api *aws_sqs.Client url string } // New instances of a client to connect SQS. -func NewProducer(sess *session.Session, url string) (*Producer, error) { +func NewProducer(cfg aws.Config, url string) (*Producer, error) { return &Producer{ - api: aws_sqs.New(sess), + api: aws_sqs.NewFromConfig(cfg), url: url, }, nil } // SendMessage sends messages to SQS. -func (p *Producer) SendMessage(groupID, deduplicationID, body string) error { +func (p *Producer) SendMessage(ctx context.Context, groupID, deduplicationID, body string) error { _, err := p.api.SendMessage( + ctx, &aws_sqs.SendMessageInput{ MessageGroupId: aws.String(groupID), MessageDeduplicationId: aws.String(deduplicationID), diff --git a/fly/main.go b/fly/main.go index 2e3284d6..a9febdf0 100644 --- a/fly/main.go +++ b/fly/main.go @@ -8,9 +8,9 @@ import ( "fmt" "os" - "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/aws/credentials" - "github.com/aws/aws-sdk-go/aws/session" + "github.com/aws/aws-sdk-go-v2/aws" + awsconfig "github.com/aws/aws-sdk-go-v2/config" + "github.com/aws/aws-sdk-go-v2/credentials" "github.com/go-redis/redis/v8" "github.com/wormhole-foundation/wormhole-explorer/common/domain" "github.com/wormhole-foundation/wormhole-explorer/common/logger" @@ -61,52 +61,67 @@ func getenv(key string) (string, error) { } // TODO refactor to another file/package -func newAwsSession() (*session.Session, error) { +func newAwsConfig(ctx context.Context) (aws.Config, error) { region, err := getenv("AWS_REGION") if err != nil { - return nil, err + return *aws.NewConfig(), err } - config := aws.NewConfig().WithRegion(region) awsSecretId, _ := getenv("AWS_ACCESS_KEY_ID") awsSecretKey, _ := getenv("AWS_SECRET_ACCESS_KEY") if awsSecretId != "" && awsSecretKey != "" { - config.WithCredentials(credentials.NewStaticCredentials(awsSecretId, awsSecretKey, "")) - } - if awsEndpoint, err := getenv("AWS_ENDPOINT"); err == nil { - config.WithEndpoint(awsEndpoint) + credentials := credentials.NewStaticCredentialsProvider(awsSecretId, awsSecretKey, "") + customResolver := aws.EndpointResolverFunc(func(service, region string) (aws.Endpoint, error) { + awsEndpoint, _ := getenv("AWS_ENDPOINT") + if awsEndpoint != "" { + return aws.Endpoint{ + PartitionID: "aws", + URL: awsEndpoint, + SigningRegion: region, + }, nil + } + + return aws.Endpoint{}, &aws.EndpointNotFoundError{} + }) + + awsCfg, err := awsconfig.LoadDefaultConfig(ctx, + awsconfig.WithRegion(region), + awsconfig.WithEndpointResolver(customResolver), + awsconfig.WithCredentialsProvider(credentials), + ) + return awsCfg, err } - return session.NewSession(config) + return awsconfig.LoadDefaultConfig(ctx, awsconfig.WithRegion(region)) } // TODO refactor to another file/package -func newSQSProducer() (*sqs.Producer, error) { +func newSQSProducer(ctx context.Context) (*sqs.Producer, error) { sqsURL, err := getenv("SQS_URL") if err != nil { return nil, err } - session, err := newAwsSession() + awsConfig, err := newAwsConfig(ctx) if err != nil { return nil, err } - return sqs.NewProducer(session, sqsURL) + return sqs.NewProducer(awsConfig, sqsURL) } // TODO refactor to another file/package -func newSQSConsumer() (*sqs.Consumer, error) { +func newSQSConsumer(ctx context.Context) (*sqs.Consumer, error) { sqsURL, err := getenv("SQS_URL") if err != nil { return nil, err } - session, err := newAwsSession() + awsConfig, err := newAwsConfig(ctx) if err != nil { return nil, err } - return sqs.NewConsumer(session, sqsURL, + return sqs.NewConsumer(awsConfig, sqsURL, sqs.WithMaxMessages(10), sqs.WithVisibilityTimeout(120)) } @@ -128,17 +143,17 @@ func newCache() (cache.CacheInterface[bool], error) { // Creates two callbacks depending on whether the execution is local (memory queue) or not (SQS queue) // callback to obtain queue messages from a queue // callback to publish vaa non pyth messages to a sink -func newVAAConsumePublish(isLocal bool, logger *zap.Logger) (*sqs.Consumer, processor.VAAQueueConsumeFunc, processor.VAAPushFunc) { +func newVAAConsumePublish(ctx context.Context, isLocal bool, logger *zap.Logger) (*sqs.Consumer, processor.VAAQueueConsumeFunc, processor.VAAPushFunc) { if isLocal { vaaQueue := queue.NewVAAInMemory() return nil, vaaQueue.Consume, vaaQueue.Publish } - sqsProducer, err := newSQSProducer() + sqsProducer, err := newSQSProducer(ctx) if err != nil { logger.Fatal("could not create sqs producer", zap.Error(err)) } - sqsConsumer, err := newSQSConsumer() + sqsConsumer, err := newSQSConsumer(ctx) if err != nil { logger.Fatal("could not create sqs consumer", zap.Error(err)) } @@ -291,7 +306,7 @@ func main() { // Creates a deduplicator to discard VAA messages that were processed previously deduplicator := deduplicator.New(cache, logger) // Creates two callbacks - sqsConsumer, vaaQueueConsume, nonPythVaaPublish := newVAAConsumePublish(isLocalFlag, logger) + sqsConsumer, vaaQueueConsume, nonPythVaaPublish := newVAAConsumePublish(rootCtx, isLocalFlag, logger) // Create a vaa notifier notifierFunc := newVAANotifierFunc(isLocalFlag, logger) // Creates a instance to consume VAA messages from Gossip network and handle the messages diff --git a/fly/processor/vaa_queue_consumer.go b/fly/processor/vaa_queue_consumer.go index f2518e24..ea6fb882 100644 --- a/fly/processor/vaa_queue_consumer.go +++ b/fly/processor/vaa_queue_consumer.go @@ -70,7 +70,7 @@ func (c *VAAQueueConsumer) Start(ctx context.Context) { continue } - msg.Done() + msg.Done(ctx) c.logger.Info("Vaa save in repository", zap.String("id", v.MessageID())) } }() diff --git a/fly/queue/queue.go b/fly/queue/queue.go index d454e3d7..a7954da2 100644 --- a/fly/queue/queue.go +++ b/fly/queue/queue.go @@ -1,9 +1,11 @@ package queue +import "context" + // Message represents a message from a queue. type Message interface { Data() []byte - Done() + Done(context.Context) Failed() IsExpired() bool } diff --git a/fly/queue/vaa_memory.go b/fly/queue/vaa_memory.go index a710abd6..7918a94c 100644 --- a/fly/queue/vaa_memory.go +++ b/fly/queue/vaa_memory.go @@ -53,7 +53,7 @@ func (m *memoryConsumerMessage) Data() []byte { return m.data } -func (m *memoryConsumerMessage) Done() {} +func (m *memoryConsumerMessage) Done(_ context.Context) {} func (m *memoryConsumerMessage) Failed() {} diff --git a/fly/queue/vaa_sqs.go b/fly/queue/vaa_sqs.go index 5276af22..3aff558d 100644 --- a/fly/queue/vaa_sqs.go +++ b/fly/queue/vaa_sqs.go @@ -48,17 +48,17 @@ func WithChannelSize(size int) SQSOption { } // Publish sends the message to a SQS queue. -func (q *SQS) Publish(_ context.Context, v *vaa.VAA, data []byte) error { +func (q *SQS) Publish(ctx context.Context, v *vaa.VAA, data []byte) error { body := base64.StdEncoding.EncodeToString(data) groupID := fmt.Sprintf("%d/%s", v.EmitterChain, v.EmitterAddress) - return q.producer.SendMessage(groupID, v.MessageID(), body) + return q.producer.SendMessage(ctx, groupID, v.MessageID(), body) } // Consume returns the channel with the received messages from SQS queue. func (q *SQS) Consume(ctx context.Context) <-chan Message { go func() { for { - messages, err := q.consumer.GetMessages() + messages, err := q.consumer.GetMessages(ctx) if err != nil { q.logger.Error("Error getting messages from SQS", zap.Error(err)) continue @@ -108,8 +108,8 @@ func (m *sqsConsumerMessage) Data() []byte { return m.data } -func (m *sqsConsumerMessage) Done() { - if err := m.consumer.DeleteMessage(m.id); err != nil { +func (m *sqsConsumerMessage) Done(ctx context.Context) { + if err := m.consumer.DeleteMessage(ctx, m.id); err != nil { m.logger.Error("Error deleting message from SQS", zap.Error(err)) } m.wg.Done() diff --git a/fly/server/controller.go b/fly/server/controller.go index 08189311..0a07a1a1 100644 --- a/fly/server/controller.go +++ b/fly/server/controller.go @@ -92,7 +92,7 @@ func (c *Controller) checkQueueStatus(ctx context.Context) error { return nil } // get queue attributes - queueAttributes, err := c.consumer.GetQueueAttributes() + queueAttributes, err := c.consumer.GetQueueAttributes(ctx) if err != nil { return err } @@ -102,7 +102,7 @@ func (c *Controller) checkQueueStatus(ctx context.Context) error { // check queue created createdTimestamp := queueAttributes.Attributes["CreatedTimestamp"] - if createdTimestamp == nil || *createdTimestamp == "" { + if createdTimestamp == "" { return errors.New("sqs queue hasn't been created") } return nil diff --git a/parser/cmd/main.go b/parser/cmd/main.go index c10ad3f2..6af62552 100644 --- a/parser/cmd/main.go +++ b/parser/cmd/main.go @@ -98,25 +98,28 @@ func main() { func newAwsConfig(appCtx context.Context, cfg *config.Configuration) (aws.Config, error) { region := cfg.AwsRegion - credentials := credentials.NewStaticCredentialsProvider(cfg.AwsAccessKeyID, cfg.AwsSecretAccessKey, "") - customResolver := aws.EndpointResolverFunc(func(service, region string) (aws.Endpoint, error) { - if cfg.AwsEndpoint != "" { - return aws.Endpoint{ - PartitionID: "aws", - URL: cfg.AwsEndpoint, - SigningRegion: region, - }, nil - } + if cfg.AwsAccessKeyID != "" && cfg.AwsSecretAccessKey != "" { + credentials := credentials.NewStaticCredentialsProvider(cfg.AwsAccessKeyID, cfg.AwsSecretAccessKey, "") + customResolver := aws.EndpointResolverFunc(func(service, region string) (aws.Endpoint, error) { + if cfg.AwsEndpoint != "" { + return aws.Endpoint{ + PartitionID: "aws", + URL: cfg.AwsEndpoint, + SigningRegion: region, + }, nil + } - return aws.Endpoint{}, &aws.EndpointNotFoundError{} - }) + return aws.Endpoint{}, &aws.EndpointNotFoundError{} + }) - awsCfg, err := awsconfig.LoadDefaultConfig(appCtx, - awsconfig.WithRegion(region), - awsconfig.WithEndpointResolver(customResolver), - awsconfig.WithCredentialsProvider(credentials), - ) - return awsCfg, err + awsCfg, err := awsconfig.LoadDefaultConfig(appCtx, + awsconfig.WithRegion(region), + awsconfig.WithEndpointResolver(customResolver), + awsconfig.WithCredentialsProvider(credentials), + ) + return awsCfg, err + } + return awsconfig.LoadDefaultConfig(appCtx, awsconfig.WithRegion(region)) } // Creates a callbacks depending on whether the execution is local (memory queue) or not (SQS queue) diff --git a/parser/config/config.go b/parser/config/config.go index 4856a10a..c269f8bd 100644 --- a/parser/config/config.go +++ b/parser/config/config.go @@ -31,10 +31,6 @@ type Configuration struct { VaaPayloadParserTimeout int64 `env:"VAA_PAYLOAD_PARSER_TIMEOUT, required"` PprofEnabled bool `env:"PPROF_ENABLED,default=false"` P2pNetwork string `env:"P2P_NETWORK,required"` - InfluxUrl string `env:"INFLUX_URL,required"` - InfluxToken string `env:"INFLUX_TOKEN,required"` - InfluxOrg string `env:"INFLUX_ORGANIZATION,required"` - InfluxBucket string `env:"INFLUX_BUCKET,required"` } // New creates a configuration with the values from .env file and environment variables. diff --git a/parser/go.mod b/parser/go.mod index 4ad513a3..e327514f 100644 --- a/parser/go.mod +++ b/parser/go.mod @@ -8,7 +8,7 @@ require ( github.com/pkg/errors v0.9.1 github.com/sethvargo/go-envconfig v0.6.0 // Configuration environment github.com/stretchr/testify v1.8.1 // indirect; Testing - github.com/wormhole-foundation/wormhole/sdk v0.0.0-20230123141139-45b3d18d80b2 + github.com/wormhole-foundation/wormhole/sdk v0.0.0-20230426150516-e695fad0bed8 go.mongodb.org/mongo-driver v1.11.2 go.uber.org/zap v1.24.0 ) @@ -19,7 +19,6 @@ require ( github.com/aws/aws-sdk-go-v2/credentials v1.1.1 github.com/aws/aws-sdk-go-v2/service/sqs v1.20.2 github.com/influxdata/influxdb-client-go/v2 v2.12.2 - github.com/mitchellh/mapstructure v1.5.0 github.com/wormhole-foundation/wormhole-explorer/common v0.0.0-00010101000000-000000000000 ) @@ -40,6 +39,7 @@ require ( github.com/ethereum/go-ethereum v1.10.21 // indirect github.com/golang/snappy v0.0.4 // indirect github.com/google/go-cmp v0.5.9 // indirect + github.com/holiman/uint256 v1.2.1 // indirect github.com/influxdata/line-protocol v0.0.0-20210311194329-9aa0e372d097 // indirect github.com/klauspost/compress v1.15.11 // indirect github.com/kr/pretty v0.3.0 // indirect diff --git a/parser/go.sum b/parser/go.sum index af27c7f1..18310369 100644 --- a/parser/go.sum +++ b/parser/go.sum @@ -63,6 +63,8 @@ github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeN github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= +github.com/holiman/uint256 v1.2.1 h1:XRtyuda/zw2l+Bq/38n5XUoEF72aSOu/77Thd9pPp2o= +github.com/holiman/uint256 v1.2.1/go.mod h1:y4ga/t+u+Xwd7CpDgZESaRcWy0I7XMlTMA25ApIH5Jw= github.com/influxdata/influxdb-client-go/v2 v2.12.2 h1:uYABKdrEKlYm+++qfKdbgaHKBPmoWR5wpbmj6MBB/2g= github.com/influxdata/influxdb-client-go/v2 v2.12.2/go.mod h1:YteV91FiQxRdccyJ2cHvj2f/5sq4y4Njqu1fQzsQCOU= github.com/influxdata/line-protocol v0.0.0-20210311194329-9aa0e372d097 h1:vilfsDSy7TDxedi9gyBkMvAirat/oRcL0lFdJBf6tdM= @@ -99,8 +101,6 @@ github.com/mattn/go-isatty v0.0.16 h1:bq3VjFmv/sOjHtdEhmkEV4x1AJtvUvOJ2PFAZ5+peK github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= github.com/mattn/go-runewidth v0.0.14 h1:+xnbZSEeDbOIg5/mE6JF0w6n9duR1l3/WmbinWVwUuU= github.com/mattn/go-runewidth v0.0.14/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= -github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= -github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe h1:iruDEfMl2E6fbMZ9s0scYfZQ84/6SPL6zC8ACM2oIL0= github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe/go.mod h1:wL8QJuTMNUDYhXwkmfOly8iTdp5TEcJFWZD2D7SIkUc= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= @@ -137,8 +137,8 @@ github.com/valyala/fasttemplate v1.0.1/go.mod h1:UQGH1tvbgY+Nz5t2n7tXsz52dQxojPU github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ= github.com/valyala/tcplisten v1.0.0 h1:rBHj/Xf+E1tRGZyWIWwJDiRY0zc1Js+CV5DqwacVSA8= github.com/valyala/tcplisten v1.0.0/go.mod h1:T0xQ8SeCZGxckz9qRXTfG43PvQ/mcWh7FwZEA7Ioqkc= -github.com/wormhole-foundation/wormhole/sdk v0.0.0-20230123141139-45b3d18d80b2 h1:we8iat9DdKt8V6aopxFe+2PkKol9cDPYwH8xZue0R60= -github.com/wormhole-foundation/wormhole/sdk v0.0.0-20230123141139-45b3d18d80b2/go.mod h1:9KomdyKDfd0O0A64dfapTbTp6I9LGkudkK8Q7s72RyI= +github.com/wormhole-foundation/wormhole/sdk v0.0.0-20230426150516-e695fad0bed8 h1:rrOyHd+H9a6Op1iUyZNCaI5v9D1syq8jDAYyX/2Q4L8= +github.com/wormhole-foundation/wormhole/sdk v0.0.0-20230426150516-e695fad0bed8/go.mod h1:dE12DOucCq23gjGGGhtbyx41FBxuHxjpPvG+ArO+8t0= github.com/xdg-go/pbkdf2 v1.0.0 h1:Su7DPu48wXMwC3bs7MCNG+z4FhcyEuz5dlvchbq0B0c= github.com/xdg-go/pbkdf2 v1.0.0/go.mod h1:jrpuAogTd400dnrH08LKmI/xc1MbPOebTwRqcT5RDeI= github.com/xdg-go/scram v1.1.1 h1:VOMT+81stJgXW3CpHyqHN3AXDYIMsx56mEFrB37Mb/E= diff --git a/tx-tracker/cmd/service/main.go b/tx-tracker/cmd/service/main.go index 460b9bcd..f3c33ff2 100644 --- a/tx-tracker/cmd/service/main.go +++ b/tx-tracker/cmd/service/main.go @@ -126,27 +126,31 @@ func newAwsConfig(ctx context.Context, cfg *config.ServiceSettings) (aws.Config, region := cfg.AwsRegion - credentials := credentials.NewStaticCredentialsProvider(cfg.AwsAccessKeyID, cfg.AwsSecretAccessKey, "") + if cfg.AwsAccessKeyID != "" && cfg.AwsSecretAccessKey != "" { - customResolver := aws.EndpointResolverFunc(func(service, region string) (aws.Endpoint, error) { - if cfg.AwsEndpoint != "" { - return aws.Endpoint{ - PartitionID: "aws", - URL: cfg.AwsEndpoint, - SigningRegion: region, - }, nil - } + credentials := credentials.NewStaticCredentialsProvider(cfg.AwsAccessKeyID, cfg.AwsSecretAccessKey, "") - return aws.Endpoint{}, &aws.EndpointNotFoundError{} - }) + customResolver := aws.EndpointResolverFunc(func(service, region string) (aws.Endpoint, error) { + if cfg.AwsEndpoint != "" { + return aws.Endpoint{ + PartitionID: "aws", + URL: cfg.AwsEndpoint, + SigningRegion: region, + }, nil + } - awsCfg, err := awsconfig.LoadDefaultConfig( - ctx, - awsconfig.WithRegion(region), - awsconfig.WithEndpointResolver(customResolver), - awsconfig.WithCredentialsProvider(credentials), - ) - return awsCfg, err + return aws.Endpoint{}, &aws.EndpointNotFoundError{} + }) + + awsCfg, err := awsconfig.LoadDefaultConfig( + ctx, + awsconfig.WithRegion(region), + awsconfig.WithEndpointResolver(customResolver), + awsconfig.WithCredentialsProvider(credentials), + ) + return awsCfg, err + } + return awsconfig.LoadDefaultConfig(ctx, awsconfig.WithRegion(region)) } func makeHealthChecks( diff --git a/tx-tracker/config/structs.go b/tx-tracker/config/structs.go index 82f84c6b..cebca701 100644 --- a/tx-tracker/config/structs.go +++ b/tx-tracker/config/structs.go @@ -54,8 +54,8 @@ type VaaPayloadParserSettings struct { type AwsSettings struct { AwsEndpoint string `split_words:"true" required:"false"` - AwsAccessKeyID string `split_words:"true" required:"true"` - AwsSecretAccessKey string `split_words:"true" required:"true"` + AwsAccessKeyID string `split_words:"true" required:"false"` + AwsSecretAccessKey string `split_words:"true" required:"false"` AwsRegion string `split_words:"true" required:"true"` SqsUrl string `split_words:"true" required:"true"` } diff --git a/tx-tracker/go.mod b/tx-tracker/go.mod index 0a94dbf2..81e85be5 100644 --- a/tx-tracker/go.mod +++ b/tx-tracker/go.mod @@ -90,7 +90,7 @@ require ( github.com/tklauser/numcpus v0.2.2 // indirect github.com/wormhole-foundation/wormhole-explorer/common v0.0.0-20230301134427-b3ec0bcc9eda github.com/wormhole-foundation/wormhole-explorer/parser v0.0.0-20230307192542-867f1c29626a - github.com/wormhole-foundation/wormhole/sdk v0.0.0-20230315165931-62bef9ffb441 + github.com/wormhole-foundation/wormhole/sdk v0.0.0-20230426150516-e695fad0bed8 go.uber.org/zap v1.24.0 golang.org/x/crypto v0.2.0 // indirect golang.org/x/sys v0.5.0 // indirect diff --git a/tx-tracker/go.sum b/tx-tracker/go.sum index 2cf37fdf..2a37800f 100644 --- a/tx-tracker/go.sum +++ b/tx-tracker/go.sum @@ -325,8 +325,8 @@ github.com/wormhole-foundation/wormhole-explorer/api v0.0.0-20230316184234-db3a5 github.com/wormhole-foundation/wormhole-explorer/api v0.0.0-20230316184234-db3a54270a77/go.mod h1:SX//TXHIIc+QMHco3wxphC5Jk6wO/lk3r9J+SZnYip8= github.com/wormhole-foundation/wormhole-explorer/parser v0.0.0-20230307192542-867f1c29626a h1:v/QDra5nOCyqSrwYIxJpNEjZqVJlCpqdN5mykcR1WOg= github.com/wormhole-foundation/wormhole-explorer/parser v0.0.0-20230307192542-867f1c29626a/go.mod h1:rFM/Krfaz8gP63CrAwQxZ9Lzk+nSsD76fW1w/e1y6L4= -github.com/wormhole-foundation/wormhole/sdk v0.0.0-20230315165931-62bef9ffb441 h1:ZSB93rvaWarOv/TTJp1wicIygQLNx6fZhgsmxDBAnO0= -github.com/wormhole-foundation/wormhole/sdk v0.0.0-20230315165931-62bef9ffb441/go.mod h1:dE12DOucCq23gjGGGhtbyx41FBxuHxjpPvG+ArO+8t0= +github.com/wormhole-foundation/wormhole/sdk v0.0.0-20230426150516-e695fad0bed8 h1:rrOyHd+H9a6Op1iUyZNCaI5v9D1syq8jDAYyX/2Q4L8= +github.com/wormhole-foundation/wormhole/sdk v0.0.0-20230426150516-e695fad0bed8/go.mod h1:dE12DOucCq23gjGGGhtbyx41FBxuHxjpPvG+ArO+8t0= github.com/xdg-go/pbkdf2 v1.0.0 h1:Su7DPu48wXMwC3bs7MCNG+z4FhcyEuz5dlvchbq0B0c= github.com/xdg-go/pbkdf2 v1.0.0/go.mod h1:jrpuAogTd400dnrH08LKmI/xc1MbPOebTwRqcT5RDeI= github.com/xdg-go/scram v1.1.1 h1:VOMT+81stJgXW3CpHyqHN3AXDYIMsx56mEFrB37Mb/E=