无法在部署时将文件从 S3 传输到 ElasticBeanstalk

Can't transfer file from S3 to ElasticBeanstalk on Deploy

出于某种原因,我无法在我的 CodePipeline 运行 期间将我的 Firebase 配置 JSON 传输到我的 EB 环境 运行。

这是在我的 .ebextensions/firebase.conf 文件中

Resources:
  AWSEBAutoScalingGroup:
    Metadata:
      AWS::CloudFormation::Authentication:
        S3Auth:
          type: "s3"
          buckets: ["*bucket-name*"]
          roleName:
            "Fn::GetOptionSetting":
              Namespace: "aws:autoscaling:launchconfiguration"
              OptionName: "IamInstanceProfile"
              DefaultValue: "aws-elasticbeanstalk-ec2-role"

files:
    "/tmp/fbsecuritykey.js":
        mode: "000400"
        owner: root
        group: root
        authentication: "S3Auth"
        source: https://*bucket-name*.s3.us-west-1.amazonaws.com/fbsecuritykey.js

container_commands:
  file_transfer_1:
    command: "mv /tmp/fbsecuritykey.js /var/app/current"

我已经尝试了很多东西。使用 container_commands 和不使用似乎都不起作用。

顺便说一下,我故意将存储桶名称用斜体表示 :) 它在我的配置中是正确的。

管道在 运行 期间未显示任何错误。

任何帮助是appreciated.Thanks。

您的 S3 存储桶需要允许 aws-elasticbeanstalk-ec2-role 访问。您可以使用为您的区域生成的默认 Elastic Beanstalk 存储桶,因为该存储桶上已经存在这些权限,或者您可以使用自定义存储桶,但您必须为 Elastic Beanstalk ec2 角色添加权限才能访问您的自定义存储桶桶.

如果您想使用自定义存储桶,请在“存储桶权限”下添加类似于以下内容的存储桶策略:

{
  "Version": "2012-10-17",
  "Id": "Policy12345",
  "Statement": [
      {
          "Sid": "Stmt12345",
          "Effect": "Allow",
          "Principal": {
              "AWS": "arn:aws:iam::YOUR_ACCOUNT_NUMBER:role/aws-elasticbeanstalk-ec2-role"
          },
          "Action": "s3:*",
          "Resource": "arn:aws:s3:::YOUR_BUCKET_NAME/*"
      }
  ]
}