调用PutObject操作时发生错误(AccessDenied):拒绝访问

时间:2018-02-01 21:00:53

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

我在将应用程序打包到s3存储桶时遇到错误,我正在使用codepipeline和aws代码构建执行此行:

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

该命令在buildspec.yml

中指定

1 个答案:

答案 0 :(得分: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.Expand在Access级别组下写入,然后选择PutObject。

9.选择Resources,然后选择Any复选框。

10.选择评论政策。

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

Building a Pipeline for Your Serverless Application