Может ли SAM создать корзину s3 для хранения кода лямбда-функции? - PullRequest
0 голосов
/ 05 декабря 2018

Возможно, это больше, чем один вопрос.Пытался зарегистрироваться на канале SAM Slack, но безуспешно.

Я пытаюсь SAM создать приложение без сервера.Я привык иметь шаблон Cloudformation для описания всех необходимых ресурсов.Теперь я запутался в том, почему SAM Cli просит меня передать S3 Bucket, куда загрузить лямбда-код функции.Обычно я ожидаю, что создание корзины s3 (со случайным именем) будет частью исполнения шаблона Cloudformation.SAM является расширением над Cloudformation или нет?

В моем template.yaml у меня есть что-то вроде этого:

Resources:

  SrcBucket:
    Type: AWS::S3::Bucket

  MyFunction:
    Type: AWS::Serverless::Function
    Properties:
      Timeout: 3
      Runtime: python3.7
      Handler: my.lambda_handler
      CodeUri: my/
      Events:
        ShopifyInstall:
          Type: Api
          Properties:
            Path: /
            Method: get

Как мне ссылаться на SrcBucket в CodeUri?

1 Ответ

0 голосов
/ 05 декабря 2018

К сожалению, нет.

Развертывание шаблона SAM состоит из двух частей, одна из которых - команда package, которая в основном создает zip-файл, и для загрузки этого файла требуется контейнер s3.И команда deploy, которая просто развертывает ваше упакованное приложение, точно так же, как это делала бы облачная информация.

У меня обычно есть небольшой скрипт bash с несколькими стеками облачной информации, один из которых является вспомогательным стеком, который создает этот сегмент (а также добавляет имя ввыходы), а затем получить имя и передать его всем другим стекам

#Create the Helper stack
echo "---------Create Helper stack ---------"
aws cloudformation deploy  --profile ${profile} --stack-name $helperStack -- 
region ${region} --template-file deployment-helper.yaml

serverlessCodeBucketName="$(aws cloudformation --region ${region} --profile 
${profile} describe-stacks --stack-name $helperStack --query 
'Stacks[0].Outputs[?OutputKey==`CodeBucketName`].OutputValue' --output text)"

aws cloudformation package --profile ${profile}  --region ${region} -- 
template-file template.yaml  --output - 
template-file serverless-output.yaml --s3-bucket 
${serverlessCodeBucketName}

aws cloudformation deploy --profile ${profile}  --stack-name 
${applicationStack} --region ${region} --template-file 
serverless-output.yaml --capabilities 
CAPABILITY_IAM 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...