Как получить имя динамически создаваемой лямбда-роли? - PullRequest
0 голосов
/ 19 сентября 2018

Мне нравится, как создается роль + встроенная политика при развертывании моего шаблона:

Ресурсы:

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?

Ответы [ 2 ]

0 голосов
/ 25 мая 2019

Мне удалось протестировать решение этой проблемы, в шаблоне SAM.yaml вы можете добавить вывод, как в CloudFormation для логического идентификатора, который автоматически создается для вас как часть преобразования при использовании таких свойств, как Policies для AWS::Serverless::Function

Логический идентификатор результирующей роли IAM равен <Function Logical ID>Role, я использовал следующее:

Outputs:
  LambdaRole:
    Value: 
      Fn::GetAtt: 
        - "LambdaFunctionRole"
        - "Arn"
    Description: "Lambda IAM Role"
0 голосов
/ 20 сентября 2018

Результирующая роль, которую SAM создает для вас, - это просто имя вашей функции с добавлением «Role» в конце.Вы можете использовать эту информацию, чтобы получить роль или ее свойства с помощью обычных функций CloudFormation.

Например, если вы хотите получить доступ к роли ARN MyFunction, вы должны использовать !GetAtt MyFunctionRole.Arn в своем SAM YAML.шаблон.Тот же принцип должен применяться к !Ref и другим функциям.

...