【问题标题】:How do I get the name of a dynamically created lambda role?如何获取动态创建的 lambda 角色的名称?
【发布时间】:2019-02-24 02:02:27
【问题描述】:

我喜欢在部署模板时创建角色 + 内联策略的方式:

资源:

MyFUnction:
    Type: AWS::Serverless::Function # More info about Function Resource: https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessfunction
    Properties:
        Description: Enter description of what this specific Lambda does
        CodeUri: hello_world/build/
        Handler: app.lambda_handler
        Runtime: python2.7

        Environment: # More info about Env Vars: https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#environment-object
            Variables:
                PARAM1: VALUE

        Policies:
            # Using AWSLambdaExecute automatically creates a role named: <StackName>Role-<UUID>
            - AWSLambdaExecute
            # This policy is assigned as an  Inline policy to the role
            - Version: '2012-10-17' # Policy Document
              Statement:
                  Effect: Allow
                  Action: ......

现在我可以引用动态创建的角色并在 SAM 模板中添加一个 Output: for it 吗?

【问题讨论】:

  • 文档似乎没有为您提供检索 IAM 执行角色的方法。如果绝对需要,您也许可以编写 CloudFormation 宏来获取此信息。你确定你真的需要它吗?我原以为它在这个特定的无服务器部署内部。
  • 并不真正需要它,但我喜欢我的输出以获取此信息 - 很高兴拥有此信息

标签: amazon-web-services aws-lambda amazon-cloudformation aws-sam-cli aws-sam


【解决方案1】:

SAM 为您创建的最终角色只是您的函数名称,并在末尾添加了“角色”。您可以使用此信息通过普通 CloudFormation 函数获取角色或属性。

例如,如果您想访问 MyFunction 的角色 ARN,您可以在 SAM YAML 模板中使用 !GetAtt MyFunctionRole.Arn。同样的原则也适用于!Ref 和其他功能。

【讨论】:

    【解决方案2】:

    我能够测试一个解决方案,在 SAM template.yaml 中,您可以像在 CloudFormation 中一样为逻辑 ID 添加一个输出,该逻辑 ID 是在使用 @ 等属性时作为转换的一部分自动为您创建的987654321@为AWS::Serverless::Function

    生成的 IAM 角色的逻辑 ID 是 &lt;Function Logical ID&gt;Role,我使用了以下内容:

    Outputs:
      LambdaRole:
        Value: 
          Fn::GetAtt: 
            - "LambdaFunctionRole"
            - "Arn"
        Description: "Lambda IAM Role"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-07-11
      • 2010-12-23
      • 2017-11-13
      • 2020-03-07
      • 2011-03-31
      • 2022-01-15
      • 2015-01-21
      • 2021-07-27
      相关资源
      最近更新 更多