使用 @aws-sdk/client-sqs npm 包从 EKS 集群 pod 推送到 AWS SQS 时出错

问题描述 投票:0回答:1

我在 AWS EKS 集群中使用

@aws/client-sqs
npm 包将消息推送到标准 SQS 队列并收到以下错误:

CredentialsProviderError: 169.254.170.23 is not a valid container metadata service hostname
    at getCmdsUri (/test/node_modules/@smithy/credential-provider-imds/dist-cjs/fromContainerMetadata.js:57:19)
    at /test/node_modules/@smithy/credential-provider-imds/dist-cjs/fromContainerMetadata.js:16:38
    at retry (/test/node_modules/@smithy/credential-provider-imds/dist-cjs/remoteProvider/retry.js:5:19)
    at /test/node_modules/@smithy/credential-provider-imds/dist-cjs/fromContainerMetadata.js:15:36
    at /test/node_modules/@smithy/property-provider/dist-cjs/chain.js:12:39
    at async coalesceProvider (/test/node_modules/@smithy/property-provider/dist-cjs/memoize.js:14:24)
    at async /test/node_modules/@smithy/property-provider/dist-cjs/memoize.js:33:24
    at async /test/node_modules/@smithy/core/dist-cjs/middleware-http-auth-scheme/httpAuthSchemeMiddleware.js:35:23
    at async /test/node_modules/@aws-sdk/middleware-sdk-sqs/dist-cjs/send-message.js:7:18
    at async /test/node_modules/@aws-sdk/middleware-logger/dist-cjs/loggerMiddleware.js:7:26 {
  tryNextLink: false
}

代码是:

const { SQSClient, SendMessageCommand } = require('@aws-sdk/client-sqs');

const sqsClient = new SQSClient();

const sendCommand = new SendMessageCommand({ QueueUrl: '<queue-url>', MessageBody: '{"a":1}' });
sqsClient
  .send(sendCommand)
  .then(() => console.log('Message sent!'))
  .catch(console.error);

看起来

169.254.170.23
更像是本地网络IP。 SQS 队列 URL 是否以某种方式解析为该本地 IP?

我们有开发和生产 EKS 集群。它在 dev env 中工作,但在 prod 中不起作用。我看到的区别是,我们在每个节点组内的 prod EKS 集群中运行

coredns
kube-proxy
side car 容器,但不在 dev 中运行。

任何人都可以帮我理解这里的问题是什么吗?

amazon-web-services amazon-sqs amazon-eks
1个回答
0
投票

169.254.170.23
是容器的 AWS 元数据 IP 地址(EKS pod 身份),从错误中可以推测,所使用的 SDK 版本似乎尚不支持它。

在这种情况下,

printenv | grep "AWS_CONTAINER_CREDENTIALS_FULL_URI"
将返回
AWS_CONTAINER_CREDENTIALS_FULL_URI=http://169.254.170.23/v1/credentials

© www.soinside.com 2019 - 2024. All rights reserved.