有没有办法在无服务器中指定一个已经创建的 s3 部署桶?
Is there a way to specify an already created s3 deployment bucket in serverless?
所以我们目前在最近的项目中使用无服务器,我们的客户向我们提供了 aws iam 用户,因为我们将部署到他们的 aws 资源中。问题是他们不会向用户提供 create s3 策略。 s3 存储桶的创建将由他们手动完成。那么我可以在 serverless.yml 中的什么地方添加他们创建的 s3 存储桶并让无服务器将其用作部署存储桶而不是创建新存储桶?
您可以在无服务器应用程序云形成脚本中使用参数:
"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"}
}
}
}
}
然后在代码中使用 S3Arn
环境变量拉出 Arn。
我认为 OP 询问的是如何指定无服务器 S3 部署存储桶,而不是如何在 Lambda 函数中引用随机存储桶。
您可以像这样在 serverless.yml
中设置部署桶:
provider:
deploymentBucket: <bucket name>
所以我们目前在最近的项目中使用无服务器,我们的客户向我们提供了 aws iam 用户,因为我们将部署到他们的 aws 资源中。问题是他们不会向用户提供 create s3 策略。 s3 存储桶的创建将由他们手动完成。那么我可以在 serverless.yml 中的什么地方添加他们创建的 s3 存储桶并让无服务器将其用作部署存储桶而不是创建新存储桶?
您可以在无服务器应用程序云形成脚本中使用参数:
"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"}
}
}
}
}
然后在代码中使用 S3Arn
环境变量拉出 Arn。
我认为 OP 询问的是如何指定无服务器 S3 部署存储桶,而不是如何在 Lambda 函数中引用随机存储桶。
您可以像这样在 serverless.yml
中设置部署桶:
provider:
deploymentBucket: <bucket name>