Ani*_*aje 0 ubuntu amazon-s3 amazon-ec2 amazon-web-services
我在公共子网中有一个EC2实例,
该EC2具有附加的S3完全访问角色。
我在S3文件夹位置中有一个.jar。
S3存储桶具有默认权限,创建存储桶时将应用默认权限。
我要做的是实现一个用户数据脚本,
该脚本将从S3位置的EC2上下载.jar。
我只能够wget的该.jar当我做出的.jar公开,
如果未在S3上公开.jar,则无法从EC2中获取它
。出于安全原因,我不想将.jar公开。
我应该怎么做才能从S3中获取.jar,而又不公开.jar?
这是我的用户数据脚本-
#! /bin/bash
sudo timedatectl set-timezone Asia/Kuala_Lumpur
sudo rm -rf /home/ubuntu/jarName.jar
sudo rm -rf /home/ubuntu/nohup.out
/usr/local/bin/aws s3api get-object --bucket myDemoBucket --key folderNameDemo/jarName.jar /home/ubuntu/jarName.jar
cd /home/ubuntu/
sudo nohup java -jar -Dspring.profiles.active=uat jarName.jar > nohup.out &
exit
Run Code Online (Sandbox Code Playgroud)
请查阅文档,以更好地了解EC2实例IAM角色如何工作。
S3和其他AWS API无法直接识别实例。请求仍必须签名。哪些IAM实例角色为您的实例提供了一组易于访问,始终新鲜的相对短暂的临时凭证-熟悉的访问密钥ID和访问密钥机密,以及在签名和提交请求时也必须使用的令牌。
aws-cli,该文件内置了对获取和使用实例角色凭据的支持,或者以上选择中最简单的也许是使用aws-cli。
/usr/local/bin/aws s3api get-object --bucket example-bucket --key path/in/s3/to/my_object.txt /tmp/local-file-name.txt
Run Code Online (Sandbox Code Playgroud)
请注意,在脚本中,对命令和文件使用完全限定的路径通常是一个好主意,因为当前环境的路径和工作目录可能未知或与预期不符。在这种情况下,我假定aws已经安装了CLI可执行文件,/usr/local/bin/并且您想要将下载的文件写入/tmp/。根据您的环境自定义它们。
另请参阅http://docs.aws.amazon.com/cli/latest/userguide/installing.html进行安装和http://docs.aws.amazon.com/cli/latest/reference/s3api/get-object。该应用程序使用aws-cli的html。
| 归档时间: |
|
| 查看次数: |
5729 次 |
| 最近记录: |