【问题标题】:"s3:CreateBucket Access Denied" on simple serverless deploy简单无服务器部署上的“s3:CreateBucket Access Denied”
【发布时间】:2021-07-05 12:50:55
【问题描述】:

我在尝试使用无服务器框架部署 lambda 时遇到权限问题。

它实际上不适用于简单的(QuickStart-given 示例),我在 AWS 上拥有管理员权限。

所以我想知道我可能做错了什么。

据我了解,它可能与授予 CloudFormation 的权限有关,但我不知道如何正确设置以使其运行。


尝试时

$ serverless deploy -v --region eu-west-1

我收到以下错误:

Serverless: Packaging service...
Serverless: Excluding development dependencies...
Serverless: Creating Stack...
Serverless: Checking Stack create progress...
CloudFormation - CREATE_IN_PROGRESS - AWS::CloudFormation::Stack - slstest-dev
CloudFormation - CREATE_IN_PROGRESS - AWS::S3::Bucket - ServerlessDeploymentBucket
CloudFormation - CREATE_FAILED - AWS::S3::Bucket - ServerlessDeploymentBucket
CloudFormation - DELETE_IN_PROGRESS - AWS::CloudFormation::Stack - slstest-dev
CloudFormation - DELETE_COMPLETE - AWS::S3::Bucket - ServerlessDeploymentBucket
CloudFormation - DELETE_COMPLETE - AWS::CloudFormation::Stack - slstest-dev
Serverless: Operation failed!
Serverless: View the full error output: https://eu-west-1.console.aws.amazon.com/cloudformation/home?region=eu-west-1#/stack/detail?stackId=arn%3Aaws%3Acloudformation%3Aeu-west-1%3A175264504000%3Astack%2Fslstest-dev%2Fa097e1b0-994a-11eb-b621-0ad1aa52c931
 
 Serverless Error ----------------------------------------
 
  An error occurred: ServerlessDeploymentBucket - API: s3:CreateBucket Access Denied.
 
  Get Support --------------------------------------------
     Docs:          docs.serverless.com
     Bugs:          github.com/serverless/serverless/issues
     Issues:        forum.serverless.com
 
  Your Environment Information ---------------------------
     Operating System:          linux
     Node Version:              14.16.0
     Framework Version:         2.33.1
     Plugin Version:            4.5.3
     SDK Version:               4.2.2
     Components Version:        3.8.1

我通过这样做创建了一个无服务器服务

$ serverless

Serverless: No project detected. Do you want to create a new one? Yes
Serverless: What do you want to make? AWS Python
Serverless: What do you want to call this project? slstest

Project successfully created in 'slstest' folder.

You can monitor, troubleshoot, and test your new service with a free Serverless account.

Serverless: Would you like to enable this? No
You can run the “serverless” command again if you change your mind later.

$ cd slstest

这是我的serverless.yml

service: slstest

frameworkVersion: '2'

provider:
  name: aws
  runtime: python3.8
  lambdaHashingVersion: 20201221

functions:
  hello:
    handler: handler.hello
    events:
      - httpApi:
         path: /hello
         method: post

我的~/.aws/credentials 文件包含

[default]
aws_access_key_id=<key>
aws_secret_access_key=<secret>

指的是管理员帐户。

【问题讨论】:

    标签: lambda deployment serverless-framework


    【解决方案1】:

    尝试使用AWS_PROFILE=default serverless deploy -v --region eu-west-1serverless deploy -v --region eu-west-1 --aws-profile default 运行相同的命令

    如果这仍然不起作用,请验证您提供的访问密钥是否确实有权使用 aws-cli 创建 s3 存储桶。

    【讨论】:

    • 我确保我可以通过 aws-cli 创建一个 S3 存储桶,这表明没有问题。与通过 en 环境变量手动设置 AWS 配置文件相同。这就是为什么我认为我只是没有将好的策略传递给某个对象(但无法弄清楚是哪个以及如何)
    【解决方案2】:

    事实证明,问题在于 AWS 期望多重身份验证 (MFA)。

    我解决了

    • 编写一个脚本,能够使用给定的配置文件动态生成经过 MFA 验证的 AWS 配置文件,以识别 MFA 设备的 ARN 和 MFA 令牌,
    • 使用创建的经过 MFA 验证的 AWS 配置文件进行部署。

    【讨论】:

      猜你喜欢
      • 2017-08-19
      • 1970-01-01
      • 1970-01-01
      • 2018-12-08
      • 1970-01-01
      • 1970-01-01
      • 2020-01-29
      • 2013-05-10
      • 2018-06-10
      相关资源
      最近更新 更多