amazon-s3 - 从 SAM 中的模板创建 IAM 角色

标签 amazon-s3 aws-cloudformation amazon-iam aws-sam-cli

我正在尝试将 IAM 角色添加到现有模板,以允许从外部源(雪花)对存储桶进行某些访问

RoleNameForAccess:
    Type: AWS::IAM::Role
    Properties: 
      RoleName: RoleNameForAccess
      Description: A role that allows snowflake to access the bucket
      Policies: 
        - PolicyName: 'SnowflakePolicyRole'
        - PolicyDocument:
          - Version: '2012-10-17'
            Statement:
            - Effect: Allow
              Action: 
                - s3:PutObject
                - s3:GetObject
                - s3:GetObjectVersion
                - s3:DeleteObject
                - s3:DeleteObjectVersion
              Resource: arn:aws:s3:::bucket-name/*
            - Effect: Allow
              Action: s3:ListBucket
              Resource: arn:aws:s3:::bucket-name
              Condition:
                StringLike:
                  s3:prefix:
                  - "*"

但它不断抛出错误:

属性策略文档不能为空。

如果我在策略文档中使用破折号,则会收到此错误:

PolicyDocument 属性的值必须是一个对象

也许我缺少一些语法,但找不到它是什么。

谢谢

最佳答案

缺少

PolicyNameAssumeRolePolicyDocument。根据用户指南更新here 。您可以根据您的要求在以下更新的 AssumeRolePolicyDocument 部分中更改 Principal

  RoleNameForAccess:
    Type: AWS::IAM::Role
    Properties:
      AssumeRolePolicyDocument:
        Version: "2012-10-17"
        Statement:
          - Effect: Allow
            Principal:
              AWS:
                - arn:aws:iam::111111111111:user/testuser
            Action:
              - 'sts:AssumeRole'
      RoleName: RoleNameForAccess
      Description: A role that allows snowflake to access the bucket
      Policies: 
        - PolicyName: SnowflakePolicyRole
          PolicyDocument:
            Version: '2012-10-17'
            Statement:
              - Effect: Allow
                Action: 
                  - s3:PutObject
                  - s3:GetObject
                  - s3:GetObjectVersion
                  - s3:DeleteObject
                  - s3:DeleteObjectVersion
                Resource: arn:aws:s3:::bucket-name/*
              - Effect: Allow
                Action: s3:ListBucket
                Resource: arn:aws:s3:::bucket-name
                Condition:
                  StringLike:
                    s3:prefix:
                    - "*"

关于amazon-s3 - 从 SAM 中的模板创建 IAM 角色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68069050/

相关文章:

hadoop - 亚马逊 EC2 和 S3 : How to read and write data

amazon-web-services - 如何使用 go-cloud s3blob 设置公共(public)读取?

amazon-web-services - Cloudformation - 构建堆栈时 Rds 失败

amazon-web-services - 使用 Cloudformation 创建 KMS key 时出现消息 "Did not have IAM permissions to process tags on AWS::KMS::Key resource"

amazon-web-services - 同一用户的多个访问 key

amazon-web-services - 从假定的角色承担一个角色?

java - 从 S3 读取加密数据

rest - 使用 AWS S3 REST API 在不知道存储桶区域的情况下检索存储桶的对象

aws-cloudformation - 在 CloudFormation 模板中参数化资源名称?

amazon-web-services - 我可以在 CloudFormation 模板中创建 CloudWatch 计划事件吗?