Как мне добавить роль IAM в политику корзины S3 в бессерверной платформе CloudFormation?

#amazon-s3 #yaml #amazon-cloudformation #amazon-iam #serverless-framework

#amazon-s3 #yaml #amazon-cloudformation #amazon-iam #serverless-framework

Вопрос:

Я использую Serverless Framework и создаю стек с дополнительными сегментами S3, в одном из которых должна быть политика корзины, для которой роль IamRoleLambdaExecution, созданная в Serveless Framework, добавлена в основной раздел политики этой корзины; как мне это сделать?

Политика корзины в стеке как есть:

     S3BucketManifestPolicy:
      Type: 'AWS::S3::BucketPolicy'
      Properties:
        Bucket: my-quicksight-manifest
        PolicyDocument:
          Statement:
            - Action:
                - 's3:*'
              Effect: Allow
              Resource:
                - !Join ['', ['arn:aws:s3:::', !Ref 'mymanifestqs', /*]]
              Principal: 
                AWS: arn:aws:iam::xxxxxxxxxx:user/serverless-admin
                Service:
                - s3.amazonaws.com
                - cloudformation.amazonaws.com
                - lambda.amazonaws.com
                - quicksight.amazonaws.com
 

В основном разделе у меня уже есть пользователь serverless-admin и некоторые службы, но не было ясно, как добавить этот конкретный ресурс в этот раздел, который явно не создан в стеке, но, похоже, является частью функций Serverless Framework при развертывании стека. Ссылка на IamRoleLambdaExecution здесь

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

Любые сведения о том, как правильно ссылаться на роль IamRoleLambdaExecution в этом основном разделе, или любые другие советы, будут с благодарностью приняты! Спасибо.

Редактировать

Я думаю, что нашел то, что искал, и внес изменения в Основной раздел. К сожалению, я все еще испытываю проблемы со стеком и контролем доступа, но, похоже, это не связано с этим конкретным синтаксисом. Обновленный стек теперь выглядит следующим образом:

     S3BucketManifestPolicy:
      Type: 'AWS::S3::BucketPolicy'
      Properties:
        Bucket: profico-quicksight-manifest
        PolicyDocument:
          Statement:
            - Action:
                - 's3:*'
              Effect: Allow
              Resource:
                - !Join ['', ['arn:aws:s3:::', !Ref 'proficiomanifestqs', /*]]
              Principal: 
                AWS: 
                  - 'arn:aws:iam::877539445438:user/serverless-admin'
                  - Fn::GetAtt: [ IamRoleLambdaExecution, Arn ] <-added here
                Service:
                  - s3.amazonaws.com
                  - cloudformation.amazonaws.com
                  - lambda.amazonaws.com
                  - quicksight.amazonaws.com 
 

Комментарии:

1. Я не мог понять вашу проблему. Пожалуйста, дайте мне знать, какие ресурсы создаются Serverless и почему вы пытаетесь добавить роль выполнения Lambda в политику корзины S3 @SkyB

2. Привет, спасибо. Я думаю, что я на пути к решению. Я хотел явно добавить это IamRoleLambdaExecution в политику корзины одного из моих корзин, но не был уверен, как это сделать. НО, я думаю, мне удалось успешно выполнить это (см. Редактирование и обновленная политика корзины).