首页 > 解决方案 > 创建 bash 脚本文件以创建 S3 存储桶

问题描述

我编写了这些命令来创建 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 个字母。

标签: bashamazon-s3aws-cli

解决方案


您收到的错误消息表明存储桶名称在进入aws命令之前发生了一些事情。你期待buckettest1234,但你得到类似的东西ettest1234

为了更容易理解为什么会发生这种情况,请尝试将您的秘密用单引号括起来,将变量引用用双引号括起来,并在自己的行上初始化变量,并打印中间值,如下所示:

创建bucket.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"

推荐阅读