aws-cdk:我无法向现有的SQS添加访问权限



我有一个代码,需要将发送消息授予现有的sqs队列。

我在aws cdk中有这个代码。但这是行不通的。未添加任何访问权限。

const sqsQ = sqs.Queue.fromQueueArn(this, "some-id", "arn:aws:sqs:us-east-2:SOME-ACCOUNT:QUEUE-NAME");
sqsQ.grantSendMessages(new iam.ServicePrincipal("events.amazonaws.com"));

我认为不可能向CDK中的现有资源授予权限。每当您使用fromQueueArn之类的东西将资源导入堆栈时,您都可以将其视为对该资源的只读引用。

换句话说,您只能更新由CDK代码管理的资源。

这里基本上有两个选项:

  1. 将原始SQS移动到CDK管理的堆栈中。您可以使用CloudFormation资源导入功能来完成此操作(https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/resource-import.html)
  2. 在CDK之外最初定义的地方修改SQS权限

试试这样的

sqsQ.addToResourcePolicy(
new PolicyStatement({
effect: Effect.ALLOW,
principals: [new ServicePrincipal(ServicePrincipals.EVENTS)],
actions: ["sqs:SendMessage"],
resources: [sqsQ.queueArn],
conditions: {
ArnEquals: {
"aws:SourceArn": <ruleArn or whatever needs permissions here>,
},
},
})
);

最新更新