CloudFormation 中如何派生 S3 存储桶名称?
How is S3 bucket name being derived in CloudFormation?
我有这个创建存储桶的 cloudformation 脚本 template.js。我有点不确定存储桶名称是如何组装的。
假设我的堆栈名称是 my-service
我正在将存储桶名称创建为 my-service-s3bucket-1p3s4szy5bomf
- 我想知道这个名字是怎么得来的
- 我也想去掉最后那个arn。
-1p3s4szy5bomf
- 我可以跳过最后的输出吗,不知道他们做了什么
template.js
中的代码
var stackTemplate = {
"AWSTemplateFormatVersion": "2010-09-09",
"Description": "with S3",
"Resources": {
"S3Bucket": {
"Type": "AWS::S3::Bucket",
"DeletionPolicy": "Retain",
"Properties": {},
"Metadata": {
"AWS::CloudFormation::Designer": {
"id": "bba483af-4ae6-4d3d-b37d-435f66c42e44"
}
}
},
"S3BucketAccessPolicy": {
"Type": "AWS::IAM::Policy",
"Properties": {
"PolicyName": "S3BucketAccessPolicy",
"Roles": [
{
"Ref": "IAMServiceRole"
}
],
"PolicyDocument": {
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:DeleteObject",
"s3:GetObject",
"s3:PutObject",
"s3:PutObjectAcl",
"s3:List*"
],
"Resource": [
{
"Fn::Sub": [
"${S3BucketArn}",
{
"S3BucketArn": {
"Fn::GetAtt": ["S3Bucket", "Arn"]
}
}
]
},
{
"Fn::Sub": [
"${S3BucketArn}/*",
{
"S3BucketArn": {
"Fn::GetAtt": ["S3Bucket", "Arn"]
}
}
]
}
]
}
]
}
}
}
},
"Outputs": {
"s3Bucket": {
"Description": "The created S3 bucket.",
"Value": {
"Ref": "S3Bucket"
},
"Export": {
"Name": {
"Fn::Sub": "${AWS::StackName}-S3Bucket"
}
}
},
"s3BucketArn": {
"Description": "The ARN of the created S3 bucket.",
"Value": {
"Fn::GetAtt": ["S3Bucket", "Arn"]
},
"Export": {
"Name": {
"Fn::Sub": "${AWS::StackName}-S3BucketArn"
}
}
}
}
};
stackUtils.assembleStackTemplate(stackTemplate, module);
I want to know how this name was derived
如果您没有为您的存储桶指定名称,CloudFormation 会根据模式 $name-of-stack-s3bucket-$generatedId[=21 生成一个新名称=]
来自文档 https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-s3-bucket.html
桶名
存储桶的名称。如果您不指定名称,AWS CloudFormation 会生成一个唯一 ID 并将该 ID 用作存储桶名称。
I also want to get rid of that arn at the end. -1p3s4szy5bomf
您可以为您的存储桶指定一个名称,但 AWS 建议将其清空以生成一个新的存储桶,以避免通过 CloudFormation 示例创建具有相同名称(stackset...)的名称:
"Resources": {
"S3Bucket": {
"Type": "AWS::S3::Bucket",
"DeletionPolicy": "Retain",
"Properties": {
"BucketName": "DesiredNameOfBucket" <==
},
"Metadata": {
"AWS::CloudFormation::Designer": {
"id": "bba483af-4ae6-4d3d-b37d-435f66c42e44"
}
}
},
Can I skip Outputs at the end, Not sure what they do
它用于创建存储桶的信息、名称和 ARN,如果需要,您可以从模板中删除输出部分
我有这个创建存储桶的 cloudformation 脚本 template.js。我有点不确定存储桶名称是如何组装的。
假设我的堆栈名称是 my-service
我正在将存储桶名称创建为 my-service-s3bucket-1p3s4szy5bomf
- 我想知道这个名字是怎么得来的
- 我也想去掉最后那个arn。
-1p3s4szy5bomf
- 我可以跳过最后的输出吗,不知道他们做了什么
template.js
中的代码var stackTemplate = {
"AWSTemplateFormatVersion": "2010-09-09",
"Description": "with S3",
"Resources": {
"S3Bucket": {
"Type": "AWS::S3::Bucket",
"DeletionPolicy": "Retain",
"Properties": {},
"Metadata": {
"AWS::CloudFormation::Designer": {
"id": "bba483af-4ae6-4d3d-b37d-435f66c42e44"
}
}
},
"S3BucketAccessPolicy": {
"Type": "AWS::IAM::Policy",
"Properties": {
"PolicyName": "S3BucketAccessPolicy",
"Roles": [
{
"Ref": "IAMServiceRole"
}
],
"PolicyDocument": {
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:DeleteObject",
"s3:GetObject",
"s3:PutObject",
"s3:PutObjectAcl",
"s3:List*"
],
"Resource": [
{
"Fn::Sub": [
"${S3BucketArn}",
{
"S3BucketArn": {
"Fn::GetAtt": ["S3Bucket", "Arn"]
}
}
]
},
{
"Fn::Sub": [
"${S3BucketArn}/*",
{
"S3BucketArn": {
"Fn::GetAtt": ["S3Bucket", "Arn"]
}
}
]
}
]
}
]
}
}
}
},
"Outputs": {
"s3Bucket": {
"Description": "The created S3 bucket.",
"Value": {
"Ref": "S3Bucket"
},
"Export": {
"Name": {
"Fn::Sub": "${AWS::StackName}-S3Bucket"
}
}
},
"s3BucketArn": {
"Description": "The ARN of the created S3 bucket.",
"Value": {
"Fn::GetAtt": ["S3Bucket", "Arn"]
},
"Export": {
"Name": {
"Fn::Sub": "${AWS::StackName}-S3BucketArn"
}
}
}
}
};
stackUtils.assembleStackTemplate(stackTemplate, module);
I want to know how this name was derived
如果您没有为您的存储桶指定名称,CloudFormation 会根据模式 $name-of-stack-s3bucket-$generatedId[=21 生成一个新名称=] 来自文档 https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-s3-bucket.html 桶名 存储桶的名称。如果您不指定名称,AWS CloudFormation 会生成一个唯一 ID 并将该 ID 用作存储桶名称。
I also want to get rid of that arn at the end. -1p3s4szy5bomf
您可以为您的存储桶指定一个名称,但 AWS 建议将其清空以生成一个新的存储桶,以避免通过 CloudFormation 示例创建具有相同名称(stackset...)的名称:
"Resources": {
"S3Bucket": {
"Type": "AWS::S3::Bucket",
"DeletionPolicy": "Retain",
"Properties": {
"BucketName": "DesiredNameOfBucket" <==
},
"Metadata": {
"AWS::CloudFormation::Designer": {
"id": "bba483af-4ae6-4d3d-b37d-435f66c42e44"
}
}
},
Can I skip Outputs at the end, Not sure what they do
它用于创建存储桶的信息、名称和 ARN,如果需要,您可以从模板中删除输出部分