#amazon-s3 #aws-lambda #yaml #amazon-cloudformation #serverless-framework
#amazon-s3 #aws-lambda #yaml #aws-cloudformation #бессерверный фреймворк
Вопрос:
Итак, я предполагаю, что, вероятно, есть прямой ответ на это (надеюсь), но я пытаюсь создать функцию AWS Lambda, которая обрабатывает файлы csv и помещает обработанные файлы в разные корзины s3 (в зависимости от того, что преобразуется и генерируется).
При этом я использую бессерверный фреймворк и CloudFormation, но замечаю, что при создании сегментов к ним привязаны посторонние значения вместе с именем службы. Например:
Корзина: new-process-2-dev-companyprocessedsalestotal08252-jdgsd2ljyqpx
на самом деле это должно было быть просто: companyprocessedsalestotal08252
Файл Yaml находится ниже, и я использовал ресурсы CloudFormation для создания других корзин. Как мне решить эту проблему с именованием?
service: new-process-2
# You can pin your service to only deploy with a specific Serverless version
# Check out our docs for more details
# frameworkVersion: "=X.X.X"
resources:
Resources:
companyincoming08252020:
Type: 'AWS::S3::Bucket'
Properties: {}
companyprocessedsalestotal08252020:
Type: 'AWS::S3::Bucket'
Properties: {}
compnayprocessedwinloss08252020:
Type: 'AWS::S3::Bucket'
Properties: {}
companyemployeestargetotal08252020:
Type: 'AWS::S3::Bucket'
Properties: {}
companyemployeesalespivot08252020:
Type: 'AWS::S3::Bucket'
Properties: {}
provider:
name: aws
runtime: python3.8
region: us-east-1
profile: serverless-admin
timeout: 120
memorySize: 128
iamRoleStatements:
- Effect: "Allow"
Action:
- "s3:*"
Resource: "*"
functions:
csv-processor:
handler: handler.featureengineering
events:
- s3:
bucket: companyincoming08252020
event: s3:ObjectCreated:*
rules:
- suffix: .csv
custom:
pythonRequirements:
dockerizePip: true
plugins:
- serverless-python-requirements
- serverless-s3-deploy
Ответ №1:
Свойство name должно быть определено для создаваемых корзин. Если это опущено, то CloudFormation сгенерирует имя для корзины:
Если вы не укажете имя, AWS CloudFormation сгенерирует уникальный идентификатор и будет использовать его в качестве имени корзины
В CFT свойство BucketName
или, если оно определено в бессерверном файле, тогда это просто name
Информация о CFT здесь: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket.html#cfn-s3-bucket-name
Бессерверная информация здесь:https://www.serverless.com/framework/docs/providers/aws/events/s3#custom-bucket-configuration
Комментарии:
1. Кроме того, имена корзин S3 должны быть универсально уникальными (а не только уникальными в вашей учетной записи), поэтому, как правило, лучше позволить AWS «унифицировать» имя для вас.