2017-02-07 3 views
1

В учетной записи A я создал ведро s3 с облачной информацией, а CodeBuild создает артефакт и загружает его в это ведро. В Account B я пытаюсь создать стек с облачной информацией и использовать артефакт из ведра учетной записи A для развертывания моей функции Lambda. Но я получил ошибку Access Denied. Кто-нибудь знает решение? Спасибо ...Доступ запрещен из ведра S3 [pendente]

"TestBucket": { 
    "Type": "AWS::S3::Bucket", 
    "DeletionPolicy": "Retain", 
    "Properties": { 
    "AccessControl": "BucketOwnerFullControl" 
    } 
}, 
"IAMPolicy": { 
    "Type": "AWS::S3::BucketPolicy", 
    "Properties": { 
    "Bucket": { 
     "Ref": "TestBucket" 
    }, 
    "PolicyDocument": { 
     "Statement": [ 
     { 
      "Effect": "Allow", 
      "Principal": { 
      "AWS": [ 
       "arn:aws:iam::xxxxxxxxxxxx:root", 
       "arn:aws:iam::xxxxxxxxxxxx:root" 
      ] 
      }, 
      "Action": [ 
      "s3:GetObject" 
      ], 
      "Resource": [ 
      { 
       "Fn::Join": [ 
       "", 
       [ 
        "arn:aws:s3:::", 
        { 
        "Ref": "TestBucket" 
        }, 
        "/*" 
       ] 
       ] 
      }, 
      { 
       "Fn::Join": [ 
       "", 
       [ 
        "arn:aws:s3:::", 
        { 
        "Ref": "TestBucket" 
        } 
       ] 
       ] 
      } 
      ] 
     } 
     ] 
    } 
    } 
} 

ответ

0

Вместо "arn:aws:iam::xxxxxxxxxxxx:root" предоставления доступа к корневому роли только, попробуйте предоставить доступ ко всем идентичностей в счете, указав только идентификатор учетной записи в качестве элемента в Principal/AWS объекта: "xxxxxxxxxxxx".

Для получения более подробной информации см. Using a Resource-based Policy to Delegate Access to an Amazon S3 Bucket in Another Account.

1

Предполагая, что ххххх в ниже утверждения номер счета счета B:

"AWS": [ 
       "arn:aws:iam::xxxxxxxxxxxx:root", 
       "arn:aws:iam::xxxxxxxxxxxx:root" 
      ] 

Вы говорите, что это ведро предоставляет доступ к счету B на основе IAM разрешений/политики, проводимых ими в Учетная запись B Служба IAM.

Таким образом, по существу все профили пользователей/экземпляров/политики, имеющие явный доступ к S3, смогут получить доступ к этому ведру учетной записи A. Это означает, что, возможно, политика IAM, которую вы прикрепляете к роли лямбда в учетной записи B, t имеет явный доступ S3.

Я предлагаю предоставить S3 доступ к вашей функции лямбда, и это должно сработать.

Обратите внимание, что в будущем, если вы хотите записать в ведомость S3 учетной записи A со счета B, вам необходимо убедиться, что вы поместили ведро-владелец-полный контроль acl, чтобы объекты были доступны через все счета.

Пример:

Использование CLI: $ AWS s3api пут-объект --acl ковшового владелец полный контроль --bucket моего ИСПЫТАНИЙ Bucket --key реж/my_object.txt --body /path/to/my_object.txt

Смежные вопросы