Почему корзина S3 не создается, хотя она упоминается в шаблоне SAM?

#amazon-web-services #amazon-s3 #amazon-cloudformation #aws-sam

Вопрос:

Я пытаюсь создать лямбда — функцию с кодом функции в корзине S3. Ниже приведен мой шаблон. Этот шаблон создает лямбду, но не упомянутую корзину S3. Я ищу помощи в создании корзины S3 с помощью этого шаблона.

 Resources:
  ProducerLambda:
    Type: 'AWS::Serverless::Function'
    Properties:
      FunctionName: !Sub '${ApplicationId}-${env}-Producer-Lambda-${AWS::AccountId}-${AWS::Region}'
      Handler: index.handler
      Runtime: nodejs14.x
      CodeUri:
        Bucket: s3bucket   
        Key: s3bucketref.zip
      Role: 'arn:aws:iam::${AWS::AccountId}:role/Producer-lambda-trigger-role' 
      VpcConfig:
        SecurityGroupIds: !Ref SecurityGroup
        SubnetIds: !Ref VPCSubnetId
      Environment:
        Variables:
          Region: !Sub '${AWS::Region}'
 

Комментарии:

1. Есть ли в корзине zip-файл?

Ответ №1:

CodeUri используется для указания пути к коду функции — это может быть URI Amazon S3, путь к локальной папке или FunctionCode объекту.

Они не используются для создания корзин S3.

Если упакованная функция не существует s3bucket/s3bucketref.zip , вам придется самостоятельно создать корзину и загрузить пакет.

Или, в качестве альтернативы, использование sam build создаст для вас Лямбду sam deploy , а затем автоматически создаст для вас корзину S3:

Для развертывания функций AWS Lambda с помощью AWS CloudFormation требуется корзина Amazon Simple Storage Service (Amazon S3) для пакета развертывания Lambda. Интерфейс командной строки AWS SAM создает и управляет этой корзиной Amazon S3 для вас.

Последним гораздо проще управлять.