【问题标题】:Passing S3cmd commands As User Data To Ec2将 S3cmd 命令作为用户数据传递给 Ec2
【发布时间】:2013-04-22 16:50:25
【问题描述】:

我有一个 AWS EC2 实例。我正在从这个 EC2 实例创建从属 EC2 实例。

在创建从属实例时,我将用户数据传递给新的从属实例。在该用户数据中,我编写了用于在 EC2 实例中创建新目录并从 S3 存储桶下载文件的代码。

但问题是,脚本在 EC2 实例上创建新目录,但无法从 S3 存储桶下载文件。

用户数据脚本:-

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

如上所示,在这段代码中mkdir pravin创建目录但s3cmd get s3://bucket/usr.sh无法下载文件,download.log文件也被创建但它仍然是空的。

我该如何解决这个问题,? (用于此的 AMI 预配置了 s3cmd)

【问题讨论】:

    标签: shell amazon-web-services amazon-s3 amazon-ec2 user-data


    【解决方案1】:

    您是否碰巧在运行 Ubuntu?然后Shlomo Swidler的问题Python s3cmd only runs from login shell, not during startup sequence might apply exactly

    s3cmd Python 脚本(这个:http://s3tools.org/s3cmd)似乎只在通过交互式登录会话运行时才有效,但在引导过程中通过脚本运行时无效。

    Mitch Garnaat suggests 应始终注意在User-Data Scripts 中执行代码所造成的环境差异:

    这可能与您登录时与脚本作为启动序列的一部分运行时的环境有所不同有关。我在 cron 作业中遇到了类似的问题。

    事实证明这确实是问题所在,Shlomo Swidler summarizes 是“根本原因”,并在此线程中进一步提供了解决方案:

    米奇,你的评论让我意识到了 启动顺序:操作用户为root。当我登录时,我是 “ubuntu”用户。

    s3cmd 会在当前用户的 ~/.s3cfg 中查找 - 它不存在于 /root/.s3cfg,仅在 /home/ubuntu/.s3cfg 中。

    幸运的是 s3cmd 允许你指定配置文件的位置 --config /home/ubuntu/.s3cfg .

    【讨论】:

    • 谢谢。这是 s3config 问题。它解决了 Virgenia 地区的问题,但不适用于其他地区。在其他地区,文件没有上传到 S3,但会被下载。可能是什么问题?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-30
    • 2016-05-31
    • 1970-01-01
    • 2020-12-14
    • 2020-03-18
    相关资源
    最近更新 更多