【问题标题】:An error occurred (AccessDenied) when calling the PutObject operation: Access Denied调用 PutObject 操作时发生错误 (AccessDenied):访问被拒绝
【发布时间】:2018-07-12 07:14:50
【问题描述】:

将应用程序打包到 s3 存储桶时出现错误,我正在使用 codepipeline 和 aws code build 执行此行:

aws cloudformation package --template-file serverless.template --s3-bucket dev-btnext-1 
                               --output-template-file NewSamTemplate.yaml

该命令在 buildspec.yml 中指定

【问题讨论】:

  • 检查您是否为您的 IAM 角色/用户指定了权限 "s3:GetBucket*", "s3:PutBucket*" and "s3:ListBucket*"

标签: amazon-web-services amazon-s3 amazon-cloudformation aws-codebuild


【解决方案1】:

您的存储桶不接受任何未加密的对象,因此在打包时使用加密密钥加密数据,然后再存储 aws cloudformation package --template-file serverless.template --kms-key-id arn:aws:kms:us-east-1:***********:key/d91b925c-8a3b-400c-ae49-******** --s3-bucket dev-btnext-1 --output-template-file NewSamTemplate.yaml

使用您自己的 KMS 密钥,您将在 IAM 加密密钥部分找到 S3 的加密密钥。

如果不遵循以下步骤,还要检查您的 CodeBuild 是否已访问 s3

1.转到 IAM 管理控制台。

2.选择角色。

3.打开为您的项目生成的服务角色,通常是 代码构建项目名称服务角色。

4.在权限选项卡下,选择添加内联策略。

5.在服务中,选择选择服务。

6.在下面的选择服务中,选择S3。

7.在操作中,选择选择操作。

8.在访问级别组下展开写入,然后选择 PutObject。

9.选择资源,然后选择任何复选框。

10.选择审核政策。

11.输入名称*,然后选择创建策略。然后返回你的管道 在上一节中创建。

Building a Pipeline for Your Serverless Application

【讨论】:

  • 我在阅读时对此表示怀疑,然后检查了默认 CodePipeline 存储桶上的存储桶策略。它确实需要加密。
猜你喜欢
  • 2018-12-09
  • 2020-04-02
  • 1970-01-01
  • 1970-01-01
  • 2021-04-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多