由于某些企业限制,我只能通过命令行访问AWS,而且我无法设置环境变量。我想知道是否有办法用这样的方式传递我的键:
aws s3 cp <file> s3://testbucket --aws-access-key <accesskey> --aws-secret-key <secretkey>
我注意到this question非常相似,尽管答案似乎不适用于我的情况或引用ec2din命令,我无法将其转换为将文件复制到s3。我刚收到回复Unknown options: --aws-access-key,--aws-secret-key
。
答案 0 :(得分:6)
试试这个:
AWS_ACCESS_KEY_ID=AAAA AWS_SECRET_ACCESS_KEY=BBB aws s3 cp <file> s3://testbucket
这将仅设置此命令的键。如果您需要会话的密钥,请按以下方式导出:
export AWS_ACCESS_KEY_ID=AAAA ; export AWS_SECRET_ACCESS_KEY=BBB ; aws s3 cp <file> s3://testbucket
答案 1 :(得分:2)
您是否可以将AK / SK保存到文件中? (非常像SSH私钥将保存在〜/ .ssh / id_rsa中)
如果是这样,您可以运行命令aws configure
,它将提示您输入AK和SK(加上默认区域和默认输出格式)。凭据将保存到〜/ .aws / credentials,区域和输出(如果您选择指定它们)将保存到〜/ .aws / config。
如果您 允许将您的凭据写入文件,请注意通过命令传递凭据的命令,例如 - 这些凭据可能会进入&#34;命令历史记录&#34;文件!在某些shell中,您可以进行配置,以便在命令前添加空格可以防止将其写入历史文件。
答案 2 :(得分:0)
在项目https://circleci.com/docs/2.0/env-vars/中添加环境变量
然后配置config .circleci / config.yml:
# deploy to aws s3
deploy:
docker:
- image: cibuilds/aws:1.15.73
environment:
aws_access_key_id: $AWS_ACCESS_KEY_ID
aws_secret_access_key: $AWS_SECRET_ACCESS_KEY
steps:
- attach_workspace:
at: ./workspace
- run:
name: Deploy to S3 if tests pass and branch is develop
command: aws s3 sync workspace/public s3://your.bucket/ --delete
答案 3 :(得分:0)
您可以在aws configure
自身内部传递密钥,下面是一个示例:
aws configure set aws_access_key_id <accessKeyID>
aws configure set aws_secret_access_key <secretAccessKey>
然后运行您的命令:
aws <command> help
aws <command> <subcommand> help
如果您想将所有这些都放在一行中:
aws configure set aws_access_key_id "xxx" && \
aws configure set aws_secret_access_key "yyy" && \
aws s3 ls