我喜欢在部署模板时如何创建角色+内联策略:
资源:
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:吗?
答案 0 :(得分:4)
SAM为您创建的最终角色只是函数的名称,最后加上“ Role”。您可以使用此信息通过正常的CloudFormation函数获取其角色或属性。
例如,如果您想访问MyFunction
的角色ARN,则可以在SAM YAML模板中使用!GetAtt MyFunctionRole.Arn
。 !Ref
和其他功能也应使用相同的原理。
答案 1 :(得分:1)
我能够测试一个解决方案,在SAM template.yaml中,您可以像在CloudFormation中为逻辑ID添加输出一样,该逻辑ID是在使用诸如{ Policies
的{1}}
产生的IAM角色的逻辑ID是AWS::Serverless::Function
,我使用了以下内容:
<Function Logical ID>Role