.ebextensions를 통한 Elastic Beanstalk S3 액세스 type: S3

.ebextensions폴더에 간단한 파일이 있습니다 .

00-myconfig.config

Resources:
    AWSEBAutoScalingGroup:
        Metadata:
            AWS::CloudFormation::Authentication:
                S3Access:
                    type: S3
                    roleName: aws-elasticbeanstalk-ec2-role
                    buckets: my-bucket
files:
    "/tmp/ca-bundle.zip":
        mode: "000755"
        owner: root
        group: root
        source: https://s3-ap-southeast-2.amazonaws.com/my-bucket/ca/ca-bundle.zip
        authentication: S3Access

여러 답변에 따르면 S3 버킷에 aws-elasticbeanstalk-ec2-role역할에 대한 액세스 권한을 부여하는 방법 입니다.

하지만 계속 403 오류가 발생합니다. /var/log/eb-activity.log

[2015-08-26T01:27:03.544Z] INFO  [22320] - [Application update/AppDeployStage0/EbExtensionPreBuild/Infra-EmbeddedPreBuild] : Activity execution failed, because: Failed to retrieve https://s3-ap-southeast-2.amazonaws.com/my-bucket/ca/ca-bundle.zip: HTTP Error 403 : <?xml version="1.0" encoding="UTF-8"?> (ElasticBeanstalk::ExternalInvocationError)

aws-elasticbeanstalk-ec2-role모든 것이 작동 하는 역할에 S3 액세스 정책을 수동으로 추가하면 URL 또는 기타 다른 철자가 틀린 것이 없다는 것을 알고 EC2 인스턴스가 올바른 역할을 수행합니다.

뭐가 잘못 되었 니?

추신. files‘인증’설정 유무에 관계없이 섹션을 시도했습니다 .



답변

나는 그것을 알아 냈고 나는 이것을 빨리 데리러 가지 않은 것에 대해 약간 바보 같은 느낌이 든다.

따라서 AWS::CloudFormation::Authentication경로 를 사용하는 사람에게는 물론 해결책은 다음과 같습니다.

버킷 정책이 aws-elasticbeanstalk-ec2-role을 허용하는지 확인하십시오. 아 !!

다음과 같이 보일 것입니다 :

{
    "Id": "Policy1111Blah",
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Stmt1440Blah",
            "Action": [
                "s3:GetObject"
            ],
            "Effect": "Allow",
            "Resource": "arn:aws:s3:::my-bucket/*",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::11111111111:role/aws-elasticbeanstalk-ec2-role"
                ]
            }
        }
    ]
}

IAM 콘솔에서 ARN을 가져올 수 있습니다.

.ebextensions 구성 파일의 지침은 EB 배포 도구에 인증을 위해 무엇을 사용해야하는지 알려주지 만, 소스 버킷 (사설이 분명한 경우)은 해당 주체 액세스를 허용해야합니다 !!!