创建bash脚本文件以创建S3存储桶

时间:2018-11-26 22:38:07

标签: bash amazon-s3 aws-cli

我编写了以下命令来创建s3存储桶:

bucketname=test1234
AWS_ACCESS_KEY_ID=*** AWS_SECRET_ACCESS_KEY=*** REGION=us-east-1 aws s3 mb "s3://$bucketname"

这成功创建了一个存储桶。但是当我将其复制到文件中时,将存储桶名称作为参数传递并运行脚本文件,则会收到错误消息:

Script in the file:
bucketname=$1
AWS_ACCESS_KEY_ID=*** AWS_SECRET_ACCESS_KEY=*** REGION=us-east-1 aws s3 mb "s3://$bucketname"

Bash文件:createbucket.txt 使用的命令:./createbucket.txt buckettest1234

    Error:

         Parameter validation failed:ettest1234
    ": Bucket name must match the regex "^[a-zA-Z0-9.\-_]{1,255}$"

由于某种原因,它甚至会取出前4个字母。

1 个答案:

答案 0 :(得分:1)

您收到的错误消息表示在将桶名称用于aws命令之前,桶名称正在发生某些变化。您期望得到buckettest1234,但得到的像是ettest1234

要更容易了解这种情况的发生原因,请尝试将秘密用单引号引起来,将变量引用用双引号引起来,并在自己的行上初始化变量,然后打印中间值,如下所示:

createbucket.sh:

#! /usr/bin/env bash
AWS_ACCESS_KEY_ID='***'
AWS_SECRET_ACCESS_KEY='***'
REGION='us-east-1' 
aws s3 mb "s3://$1"
aws s3 cp "s3://frombucket/testfile.txt" "s3://$1/testfile.txt"