【问题标题】:Add inline policy to aws SAM template将内联策略添加到 aws SAM 模板
【发布时间】:2020-04-02 14:32:45
【问题描述】:

我正在使用 SAM 模板来创建我的无服务器应用程序。

使用资源属性下的标签Policies,我可以像这样添加标准策略:

Resources:
  QueryFunction:
    Type: AWS::Serverless::Function
    Properties:
      CodeUri: query/
      Handler: app.lambda_handler
      Policies:
        - AmazonDynamoDBFullAccess
        - AWSLambdaVPCAccessExecutionRole
      Runtime: python3.7

问题是我需要附加内联策略才能仅访问特定的 DynamoDB 表。

如何将此内联策略放入模板中?

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "dynamodb:*",
            "Resource": "dynamo_db_table_endpoint"
        }
    ]
}

谢谢

【问题讨论】:

    标签: amazon-web-services aws-lambda amazon-iam aws-sam


    【解决方案1】:

    试试这个:

    QueryFunction:
        Type: AWS::Serverless::Function
        Properties:
          CodeUri: query/
          Handler: app.lambda_handler
          Policies:
            - AmazonDynamoDBFullAccess
            - AWSLambdaVPCAccessExecutionRole
            - Version: '2012-10-17' # Policy Document
              Statement:
                - Effect: Allow
                  Action:
                    - dynamodb:*
                  Resource: 'arn:aws:dynamodb:*:*:table/dynamo_db_table_endpoint'
          Runtime: python3.7
    

    Amazon DynamoDB: Allows Access to a Specific Table

    如果您想将 tableName 作为参数更改 Resource: 'arn:aws:dynamodb:*:*:table/dynamo_db_table_endpoint' 传递给 Resource: !Sub 'arn:aws:dynamodb:${AWS::Region}:${AWS::AccountId}:table/${tableName}'

    希望对你有帮助

    【讨论】:

    • @rivamarco 运气好吗?
    • 我们可以在其中添加多个资源吗?例如:资源:[,]
    • 我知道我要晚一年才添加此内容,但您能否仅附加 PolicyDocument 部分,或者是否有办法构建添加现有角色的策略?例如此页面上的最后一个示例:docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/…
    猜你喜欢
    • 2018-08-05
    • 2020-11-14
    • 1970-01-01
    • 2021-02-07
    • 2020-10-14
    • 1970-01-01
    • 2021-03-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多