【发布时间】:2022-01-10 22:28:22
【问题描述】:
我从环境变量中获取 S3 存储桶的名称。如果它还不存在,我想创建它。我写了这份工作:
check_s3_bucket:
stage: create environment
image:
name: banst/awscli
entrypoint: ['']
script:
- |-
if aws s3api head-bucket --bucket "$BUCKET_NAME" 2>&1 | grep -q 'Not Found'; then
echo "Creating S3 Bucket: $BUCKET_NAME in Region: $AWS_DEFAULT_REGION";
aws s3api create-bucket --bucket $BUCKET_NAME --region $AWS_DEFAULT_REGION \
--create-bucket-configuration LocationConstraint=$AWS_DEFAULT_REGION --acl public-read;
else
echo "Bucket already exists."
fi
不幸的是,它总是遇到 else 语句。我尝试通过管道将 stderr 传输到 stdout,但仍然无法正常工作。
【问题讨论】:
-
脚本看起来不错。也许存在权限问题并返回“禁止”?
-
我注意到您几乎所有的问题都得到了回答,但没有一个答案被接受。接受有用的答案不仅是一种好习惯,而且可以减少重复并增加您的问题得到实际回答的机会。
-
进展如何?还是不行?
-
不幸的是,它仍然不起作用。我尝试了你的新代码,但它仍然总是遇到“桶已经存在”。声明。
-
我的代码是正确的。你可能以某种方式改变了它?
标签: amazon-web-services gitlab continuous-integration command-line-interface bucket