如何在s3中动态创建一个文件夹,当做cloudformation包



我正在创建一个CI/CD管道,其中我使用cloudformation包来打包部署。现在,我希望cloudformation将工件上传到具有当前日期时间戳的动态创建的文件夹中。我能做到吗?我的解决方案如下,但行不通。

build.sh

other commands
timestamp=$(date +%s)
aws cloudformation package --template-file template.yaml --output-template-file packaged-template.yaml --s3-bucket bucket name --s3-prefix cfn-deployment/$timestamp

现在我想在deploy.shshell脚本中使用这个timestamp变量,其中cloudformation部署命令我使用

没有"文件夹"的概念;或Amazon S3中的目录。它是对象存储。"paths"实际上只是对象名称。路径的名称中有正斜杠,Amazon S3 Console将以一种特殊的方式处理它,使其看起来像目录。在现实中,你没有。

你想做的事情没有意义,而且是不可能的。当您需要将工件上传到S3时,只需指定路径就可以了,不需要通过CloudFormation做任何事情。

例子创建空桶

aws s3api create-bucket --bucket $MY_BUCKET --region us-east-1

上传包含今天日期的密钥文件:

echo 'hello' > myfile
aws s3 cp myfile s3://$MY_BUCKET/$(date -u +"%Y-%m-%d")/myfile
upload: ./myfile to s3://REDACTED/2023-01-09/myfile

通过s3 ls列出对象(使其看起来像您的linux列表):

aws s3 ls s3://$MY_BUCKET
PRE 2023-01-09/

通过API (s3api list-objects-v2)列出对象:

aws s3api list-objects-v2 --bucket $MY_BUCKET
{
"Contents": [
{
"Key": "2023-01-09/myfile",
"LastModified": "2023-01-09T10:43:20.000Z",
"ETag": ""b1946ac92492d2347c6235b4d2611184"",
"Size": 6,
"StorageClass": "STANDARD"
}
]
}

相关内容

  • 没有找到相关文章

最新更新