【发布时间】:2021-02-01 21:25:51
【问题描述】:
我正在尝试将我的无服务器框架应用程序部署到多个阶段。
我创建了一个具有我需要的所有权限的 IAM 用户,并将他们的访问密钥放在 ~/.aws/credentials。
当我部署到阶段 beta 时,部署工作完美:
sls deploy -s beta --verbose --profile myProfile
当我部署到阶段 dev 时,我收到拒绝访问错误。这个命令:
sls deploy -s dev --verbose --profile myProfile
产生这些错误:
CloudFormation - UPDATE_FAILED - AWS::SQS::Queue - MyQueue
CloudFormation - CREATE_IN_PROGRESS - AWS::SNS::Topic - MyTopic
CloudFormation - UPDATE_FAILED - AWS::SNS::Topic - MyTopic
CloudFormation - UPDATE_FAILED - AWS::IAM::Role - IamRoleLambdaExecution
...
Serverless Error ---------------------------------------
An error occurred: MyQueue - API: sqs:CreateQueue Access to the resource https://sqs.xx-xxxx-2.amazonaws.com/ is denied..
我的serverless.yml 看起来像这样:
# serverless.yml
service: "my-lambda"
app: "my-lambda"
org: "my-org"
package:
individually: true
custom:
topicName: "my-topic--${opt:stage, self:provider.stage}"
queueName: "my-queue--${opt:stage, self:provider.stage}"
provider:
name: "aws"
runtime: "nodejs12.x"
region: "xx-xxxx-2"
profile: "myProfile"
environment:
NODE_ENV: "${opt:stage, self:provider.stage}"
SNS_TOPIC_NAME: "${self:custom.topicName}"
SQS_QUEUE_NAME: "${self:custom.queueName}"
SLS_DEBUG: "*"
functions:
myFunc:
handler: "index.handler"
events:
- sns:
arn: !Ref MyTopic
topicName: "${self:custom.topicName}"
redrivePolicy:
deadLetterTargetRef: "MyQueue"
resources:
Resources:
MyTopic:
Type: "AWS::SNS::Topic"
Properties:
TopicName: "${self:custom.topicName}"
MyQueue:
Type: "AWS::SQS::Queue"
Properties:
QueueName: "${self:custom.queueName}"
这是myProfile 的政策:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "ssm:GetParameters",
"Resource": "arn:aws:ssm:xx-xxxx-2::parameter/Config/*"
},
{
"Effect": "Allow",
"Action": "sns:SetSubscriptionAttributes",
"Resource": "*"
},
{
"Effect": "Allow",
"Action": "sns:*",
"Resource": "arn:aws:sns:xx-xxxx-2::my-topic"
},
{
"Effect": "Allow",
"Action": "sqs:*",
"Resource": "arn:aws:sqs:xx-xxxx-2::my-queue"
}
]
}
我做错了什么?
【问题讨论】:
-
您是否提供了在两个阶段或仅测试版上创建 sqs 的权限。根据您的模板,您需要在“my-queue--beta”和“my-queue--dev”上授予创建访问权限。从错误来看,您似乎只授予“my-queue--beta”
标签: amazon-web-services amazon-iam serverless-framework