【问题标题】:AWS Python script vs AWS CLIAWS Python 脚本与 AWS CLI
【发布时间】:2015-11-19 20:30:08
【问题描述】:

我下载了 AWS cli,并能够成功列出我的存储桶中的对象。但是从 Python 脚本做同样的事情是行不通的。错误是禁止错误。
我应该如何配置 boto 以使用相同的默认 AWS 凭证(与 AWS cli 使用的一样)
谢谢

import logging import urllib, subprocess, boto, boto.utils, boto.s3

logger = logging.getLogger("test") formatter =
logging.Formatter('%(asctime)s %(message)s') file_handler =
logging.FileHandler("test.log") file_handler.setFormatter(formatter)
stream_handler = logging.StreamHandler(sys.stderr)
logger.addHandler(file_handler) logger.addHandler(stream_handler)
logger.setLevel(logging.INFO)

# wait until user data is available while True:
logger.info('**************************** Test starts *******************************')
userData = boto.utils.get_instance_userdata()
if userData:
    break
time.sleep(5)

bucketName = '' 
deploymentDomainName = ''

if bucketName:
    from boto.s3.key import Key
    s3Conn = boto.connect_s3('us-east-1')
    logger.info(s3Conn)
    bucket = s3Conn.get_bucket('testbucket')
    key.key = 'test.py'
    key.get_contents_to_filename('test.py')

CLI 是 -->

aws s3api get-object --bucket testbucket --key test.py my.py

【问题讨论】:

  • 请编辑您的问题以提供您正在使用的 cli 命令并包含您的 boto 代码。此外,包括错误输出。
  • 您在同一台计算机上运行这两个命令的位置?它是分配了角色的 EC2 实例,还是通过本地文件提供的凭据?
  • 是的,它是一个分配了角色的 ec2 实例。但是为什么它可以从 cli 命令行而不是 python 脚本工作。这里还有更新的python脚本和bat文件
  • 哪一行产生了错误?能否请您显示错误输出。

标签: amazon-web-services aws-cli


【解决方案1】:

默认情况下使用 CLI 时,它会从 .aws/credentials 文件中获取凭据,但要运行机器人,您必须在 python 脚本中指定访问密钥和密钥。

import boto
import boto.s3.connection
access_key = 'put your access key here!'
secret_key = 'put your secret key here!'

   conn = boto.connect_s3(
        aws_access_key_id = access_key,
        aws_secret_access_key = secret_key,
        host = 'bucketname.s3.amazonaws.com',
        #is_secure=False,               # uncomment if you are not using ssl
        calling_format = boto.s3.connection.OrdinaryCallingFormat(),
        )

【讨论】:

    【解决方案2】:

    是否可以使用来自 Amazon (Boto 3) 的最新 Python SDK?如果是这样,请按照此处所述设置您的凭据:Boto 3 Quickstart

    另外,您可以检查您的环境变量。如果它们不存在,那也没关系。如果它们与您帐户上的不匹配,则可能是一些 AWS 开发工具包和其他工具使用环境变量而不是配置文件的问题。

    *尼克斯: echo $AWS_ACCESS_KEY_ID && echo $AWS_SECRET_ACCESS_KEY

    窗户: echo %AWS_ACCESS_KEY% & echo %AWS_SECRET_ACCESS_KEY%

    (对不起,如果我的 windows-foo 很弱)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-13
      • 1970-01-01
      • 1970-01-01
      • 2018-04-05
      • 1970-01-01
      • 2021-09-11
      • 2019-07-19
      • 2019-11-04
      相关资源
      最近更新 更多