S3创建存储桶失败。

6

我正在尝试创建一个无服务器项目,该项目部署了一个CloudFormation,并在其中尝试创建一个S3存储桶。但是由于以下错误,此过程失败:

15:23:25 UTC+0550   CREATE_FAILED       AWS::S3::Bucket ServerlessDeploymentBucket  API: s3:CreateBucket Access Denied
15:23:24 UTC+0550   CREATE_IN_PROGRESS  AWS::S3::Bucket ServerlessDeploymentBucket  

我尝试使用命令aws s3api create-bucket --bucket my-bucket --region us-west-2创建S3存储桶,成功创建了存储桶。但是我不确定为什么在通过Serverless创建S3存储桶时出现访问被拒绝的情况。可能的问题是什么呢?
以下是我的serverless.yml文件。
service: auth-service-gs

provider:
  name: aws
  runtime: python2.7
  stage: dev2-gs-1
  region: us-west-2
  profile: mfa
  environment:
    DB_HOST: "DB_HOST"
    DB_USER: "root"
    DB_PASS: "<password>"
    LOG_LEVEL: "DEBUG"


functions:
  login:
    handler: handler.login
    events:
       - http:
           path: /api/v1/login
           method: post
           cors: true

我使用$serverless deploy部署服务。 此外,还需要关注~/.aws/credentials的内容。

[mfa]
aws_access_key_id = <ACESS_KEY>
aws_secret_access_key = <SECRET_KEY>
aws_session_token = <SESSION ID>

我通过运行以下命令获得:

$ aws sts get-session-token --serial-number arn:aws:iam::<数字>:mfa/<用户名> --token-code 123456

这与IT技术有关。

4
检查Serverless是否使用了IAM角色,该角色没有必要的权限来创建S3存储桶以运行CloudFormation。 - Chacko
Serverless配置提到了一对密钥,但没有明确提到角色。我使用了同一对密钥,并成功创建了存储桶。 - Ganesh Satpute
@GaneshSatpute,请在帖子中更新serverless.yml文件和运行deploy命令的步骤。 - Chacko
@strongjz 你提供的文档链接仅适用于我使用现有的S3资源时。但在我的情况下,当我们部署它时,无服务器将创建一个新的S3存储桶。如果我错了,请告诉我。 - Ganesh Satpute
嗨@ChackoMathew。我已经更新了答案,并提供了您要求的详细信息。如果您需要其他信息,请告诉我。 - Ganesh Satpute
显示剩余3条评论
1个回答

3

根据您的实现方式,您的进程角色将需要IAM权限,可以在角色或用户级别上进行配置。

假设您希望该进程能够创建并拥有存储桶的所有权限,则需要类似以下设置:

{
  "Statement": [
    {
      "Action": "s3:*",
      "Effect": "Allow",
      "Resource": [
        "arn:aws:s3:::my-bucket",
        "arn:aws:s3:::my-bucket/*"
      ]
    }
  ]
}

但如果是这样的话,我就不能使用AWS命令行创建S3存储桶了,对吧? - Ganesh Satpute
此外,该过程会创建新的S3存储桶。 - Ganesh Satpute
这个应该放在哪里? - I'm not human

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接