AWS SAM: можем ли мы использовать уже существующий API в шаблоне aws sam?

У меня есть лямбда-функция, которую нужно активировать через Amazon API Gateway. Есть ли способ включить уже существующий API (созданный с помощью консоли AWS) в шаблон AWS SAM?


person A Teja    schedule 03.08.2020    source источник
comment
вы можете использовать AWS::Serverless::Api, вы проверяли эту страницу? docs.aws.amazon.com/ бессерверная модель приложения/последняя/   -  person ZEE    schedule 03.08.2020
comment
Это создаст новый API, но я хочу использовать уже существующий API в файле шаблона.   -  person A Teja    schedule 05.08.2020


Ответы (1)


SAM еще не поддерживает !ImportValue в шаблоне.

Ошибка на Github

На GitHub модели aws/serverless-application-model есть открытый PR для этой функции.

см. здесь

Если вы хотите, вы можете помочь и внести свой вклад в этот PR, чтобы вы могли начать использовать !ImportValue в своем SAM template.yml

В противном случае я предлагаю вам пойти по-старому: вы создаете CI/CD с шаблоном CloudFormation, который может использовать !ImportValue и связан с корзиной S3, где находится код вашей лямбда-функции.

Примеры шаблонов Cloudformation

Обновлять

SAM CLI теперь поддерживает !ImportValue, проблема на Github закрыта.

Вы можете использовать его следующим образом

# You need to export the resource that you want to use in another template first

# This goes at the end of your template.yml file, after the Resources

# template.yml in the first repo
Outputs:
    myExportedResource:
        Value: !Ref TheResource
        Export:
            Name: !Sub "{environment}-nice-export-name"


# template.yml in the second repo (This obviously goes in Resources)
    MyLambda:
        Type: AWS::Serverless::Function
        Properties:
            FunctionName: awesome-lambda
            CodeUri: ./dist
            Handler: this-file.handler
            Role: !GetAtt LambdaRole.Arn
            VpcConfig:
                SecurityGroupIds:
                    - !GetAtt SecurityGroup.GroupId
                SubnetIds:
                    - Fn::ImportValue: !Sub "${environment}-nice-export-name"

Вы можете использовать его точно так же, как обычный шаблон cloudformation.

https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-importvalue.html

Обратите внимание, что здесь я использовал Fn:ImportValue, потому что мне нужно было использовать !Sub, но если вам не нужно ссылаться на параметр в значении импорта, просто используйте !ImportValue

person Ben    schedule 13.12.2020
comment
Любая документация о том, как именно мы можем использовать !ImportValue? - person Mooncrater; 02.07.2021
comment
@Mooncrater Я обновил свой ответ примером кода. Вы можете использовать его точно так же, как обычное облачное формирование !ImportValue. Убедитесь, что у вас установлена ​​последняя версия sam cli. Вы можете проверить версию, набрав sam --version в своей оболочке. убедитесь, что версия не ниже 1.24.1 - person Ben; 04.07.2021