【问题标题】:How to write Resource-based policy in Cloudformation如何在 Cloudformation 中编写基于资源的策略
【发布时间】:2022-01-08 07:21:37
【问题描述】:

我想从外部 AWS 账户调用 Lambda,我通过在控制台的基于资源的策略选项卡(Lambda > 配置 > 权限 > 基于资源的策略)中创建策略语句来设法做到这一点。虽然,我找不到在我的 CloudFormation 模板中编写这样的策略的方法。这是我写的:

InvokePolicy:
    Type: AWS::IAM::Policy
    Properties:
      PolicyName: 'InvokeLambdaFromGateway'
      Roles: 
        - !Sub "arn:aws:iam::${AWS::AccountId}:role/NameOfLambda"
      PolicyDocument:
        Version: '2012-10-17'
        Statement:
          - Sid: InvokeLambdaExternally
            Effect: Allow
            Resource:
              - !Ref NameOfLambda
            Action:
              - lambda:InvokeFunction
            Principal:
              AWS: ["arn:aws:iam::AccountIUseToInvokeTheLambda:root"]

但我收到此错误:IAM Resource Policy statement shouldnt have Principal or NotPrincipal

如何使用 Principal 定义将该策略附加到我的 Lambda?

【问题讨论】:

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


    【解决方案1】:

    此错误是因为您没有将主体添加到策略中。您需要添加权限:

      permission:
        Type: AWS::Lambda::Permission
        Properties:
          FunctionName: !GetAtt function.Arn
          Action: lambda:InvokeFunction
          Principal: 123456789012
    

    documentation 中了解更多信息。

    【讨论】:

    • 效果很好,我只是不明白为什么我以前没有找到这个,但非常感谢
    猜你喜欢
    • 2020-05-07
    • 1970-01-01
    • 2020-03-24
    • 2021-08-17
    • 2021-03-09
    • 1970-01-01
    • 2019-08-31
    • 2018-04-16
    • 2018-09-28
    相关资源
    最近更新 更多