Truy cập đàn hồi Beanstalk S3 thông qua .ebextensions


9

Tôi có một tập tin đơn giản trong .ebextensionsthư mục của mình :

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

Mà theo nhiều câu trả lời là cách để cấp quyền truy cập nhóm S3 vào aws-elasticbeanstalk-ec2-rolevai trò.

Nhưng tôi vẫn tiếp tục gặp lỗi 403 trong /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)

Nếu tôi thêm thủ công chính sách truy cập S3 vào aws-elasticbeanstalk-ec2-rolevai trò thì mọi thứ đều hoạt động, vì vậy tôi biết rằng tôi không có lỗi chính tả trong URLS hoặc bất cứ điều gì khác, ví dụ EC2 chắc chắn là đúng vai trò.

Chuyện gì thế?

Tái bút Tôi đã thử filesphần có hoặc không có cài đặt 'xác thực'.

Câu trả lời:


9

Tôi đã tìm ra nó và tôi cảm thấy một chút ngớ ngẩn vì đã không chọn điều này sớm hơn.

Vì vậy, đối với bất cứ ai sử dụng AWS::CloudFormation::Authenticationđường dẫn, giải pháp tất nhiên là:

Hãy chắc chắn rằng chính sách Bucks của bạn cho phép vai trò aws-thunbeanstalk-ec2 của bạn. ĐỪNG !!

Nó sẽ trông giống như thế này:

{
    "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"
                ]
            }
        }
    ]
}

Bạn có thể lấy ARN từ bảng điều khiển IAM.

Các hướng dẫn trong tệp cấu hình .ebextensions của bạn chỉ cho các công cụ triển khai EB sử dụng những gì để xác thực, nhưng thùng nguồn của bạn (nếu rõ ràng là riêng tư) cần phải cho phép truy cập chính đó !!!

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.