2013-04-22 66 views
0

我有s3cmd和EC2 api预配置AMI。使用用户数据创建新的实例以从S3存储桶下载文件时,我遇到以下一些问题。用户数据脚本没有从S3存储桶下载文件?

在用户数据中,我的代码为
- 在新实例上创建新目录。
- 从AWS S3存储桶下载文件。

Script是

#! /bin/bash 
cd /home 
mkdir pravin 
s3cmd get s3://bucket/usr.sh >> temp.log 

但在上面的脚本中,mkdir pravin创建新的目录与名称普拉但s3cmd get s3://bucket/usr.sh不能下载从AWS S3存储文件。

它也创建了temp.log但它是空的。

那么我该如何解决这个问题呢?

回答

0

我怀疑运行用户数据脚本的用户缺少.s3cfg文件。运行此脚本时,您可能需要找到指示文件位置的方法。

+0

: - 我应该怎么做呢? – Pravin 2013-04-22 05:49:39

+1

将'-c FILE'或'--config = FILE'选项传递给s3cmd,指向保存'.s3cfg'的目录 – datasage 2013-04-22 05:53:17

0

另一种解决方案是使用分配了IAM角色的实例和aws-cli,这将需要安装Python。所有这一切都可以通过插入在user-data场以下为实例来完成:

#!/bin/bash 

apt-get update 
apt-get -y install python-pip 
apt-get -y install awscli 

mkdir pravin 
aws s3 cp s3://bucket/usr.sh temp.log --region {YOUR_BUCKET_REGION} 

注:以上适用于Ubuntu仅。

然后为实例IAM的角色,你会附加一个政策,像这样:

{ 
    "Version":"2012-10-17", 
    "Statement":[{ 
     "Effect":"Allow", 
     "Action":"s3:*", 
     "Resource":"arn:aws:s3:::YourBucketName/*" 
     } 
    ] 
} 
相关问题