如何将S3桶的原始名称赋值给变量并在AWS CLI中使用
提取S3桶名到变量用于后续AWS CLI命令
你执行创建S3桶的命令:
bucketName=$(aws s3 mb s3://mytestbkt-${AccountAlias})
成功创建桶后,$bucketName里存的是make_bucket: mytestbkt-testacc123,而非纯桶名,导致后续执行Shield关联命令时出错:
aws shield associate-drt-log-bucket --log-bucket $bucketName
错误信息:
make_bucket:: command not found aws: error: argument --log-bucket: expected one argument
解决方法
方法1:直接构造桶名(最可靠)
既然你已经明确桶名前缀和$AccountAlias变量,可先构造出纯桶名,再用该变量创建桶,后续命令直接复用即可:
# 先构造纯桶名 bucketName="mytestbkt-${AccountAlias}" # 创建桶 aws s3 mb s3://${bucketName} # 后续直接使用变量 aws shield associate-drt-log-bucket --log-bucket $bucketName
方法2:从命令输出中提取桶名
如果必须从aws s3 mb的输出里提取桶名,可借助文本处理工具截取有效部分:
# 用awk提取输出的第二个字段 bucketName=$(aws s3 mb s3://mytestbkt-${AccountAlias} | awk '{print $2}') # 或用cut命令按空格分割取第二部分 bucketName=$(aws s3 mb s3://mytestbkt-${AccountAlias} | cut -d' ' -f2)
处理后$bucketName将仅保留纯桶名,后续CLI命令即可正常执行。
内容的提问来源于stack exchange,提问作者Kikeman26
相关产品推荐
相关产品推荐

