通过 CDK 创建动态 S3 存储桶名称

ita*_*aaa 1 amazon-s3 amazon-web-services aws-cdk

我尝试使用以下代码通过 CDK 创建 S3 存储桶

const myBucket = new Bucket(this, 'mybucket', {
  bucketName: `NewBucket`
});
Run Code Online (Sandbox Code Playgroud)

由于 S3 存储桶名称是唯一的,当我尝试上传到另一个帐户时,堆栈部署失败。

我可以在每次部署时手动更改存储桶名称,但是有没有办法让我动态添加“NewBucket-${Stack.AWSaccountId}”,以便每当将堆栈部署到任何 aws 帐户存储桶时,都会创建没有任何错误的存储桶名称

Rya*_*yan 5

您可以在前面添加 AWS 账户 ID,例如

const myBucket = new Bucket(this, `${id}-bucket`, {
    bucketName: `${this.account}-NewBucket`
});
Run Code Online (Sandbox Code Playgroud)

但一般来说,如果您想要每个环境特定的内容,建议扩展默认属性,传递到您的堆栈并提供前缀/名称,因为 AWS 认为帐户 ID 是敏感的。

例如

export interface Config extends cdk.StackProps {
  readonly params: {
    readonly environment: string;
  };
}
Run Code Online (Sandbox Code Playgroud)

然后您可以在您的存储桶名称中使用${props.params.environment}