Итак, в настоящее время мы используем бессерверный режим в нашем недавнем проекте, и наш клиент предоставил нам пользователя aws iam, потому что мы будем развертывать его ресурсы aws. Проблема в том, что они не передают пользователю политику create s3. Создание ведра s3 будет выполнено ими вручную. Итак, где в serverless.yml я могу добавить созданный ими сегмент s3 и использовать его без сервера в качестве сегмента развертывания вместо создания нового?
Есть ли способ указать уже созданный сегмент развертывания s3 в бессерверном режиме?
Ответы (2)
Я думаю, что OP спрашивает о том, как указать сегмент развертывания Serverless S3, а не о том, как ссылаться на случайный сегмент в функции Lambda.
Вы можете установить сегмент развертывания в serverless.yml
следующим образом:
provider:
deploymentBucket: <bucket name>
person
Brian Winant
schedule
06.07.2018
Да это только для ведра развертывания. Понятно, значит только название ведра? Не ARN?
- person Karias Bolster; 08.07.2018
В бессерверных документах говорится, что это только имя корзины. Поскольку сегменты S3 глобально уникальны, ARN легко вычислить на основе этого
- person Brian Winant; 09.07.2018
Также стоит прочитать github.com/serverless/serverless/issues/3060, если вы пришли сюда, чтобы узнать, как / можно ли настроить путь внутри корзины S3 (короче говоря, пока не поддерживается. Если у вас 10 бессерверных проектов, вам нужно 10 корзин S3).
- person Ashutosh Jindal; 15.11.2019
Если у вас 10 бессерверных проектов, вам не нужно 10 сегментов S3. Бессерверная версия сгенерирует уникальное имя zip-файла из имени проекта, имени стадии и отметки времени. Если у вас нет необходимости ограничивать пути S3 по причинам IAM, вы можете совместно использовать корзину для бессерверных проектов. См. github.com/serverless/serverless/issues/.
- person Brian Winant; 21.11.2019
Вы можете использовать параметры в скрипте формирования облака бессерверного приложения:
"Parameters" : {
"S3BucketArn" : {
"Default" : "arn:aws:s3:::somebucketarndefaults",
"Description" : "The ARN for the S3 Bucket",
"Type" : "String"
}
}
Я предполагаю, что вы используете это в бессерверной функции (Lambda), поэтому вы можете передать это, используя переменные среды
"Resources" : {
"MyAmazingFunction" : {
"Type" : "AWS::Serverless::Function",
"Properties": {
"Handler": "functions::handle",
// Yada yada
"Environment" : {
"Variables" : {
"S3Arn": {"Ref" : "S3BucketArn"}
}
}
}
}
Затем в коде просто извлеките Arn, используя переменную среды S3Arn
.
person
Kevin Smith
schedule
05.07.2018