私は、Boto3がアクセスファイルと秘密鍵をハードコードするのではなく、設定ファイルから取得するようにします。私のLinuxサーバーでは、次の環境変数AWS_SHARED_CREDENTIALS_FILE
を値/app/.aws/credentials
に設定しました。 /app/.aws/では、私は次の内容を含む名前の資格情報を使用してファイルを置く:Boto3は設定ファイルのキーを使用しません
[default]
aws_access_key_id = abcd
aws_secret_access_key = abcd
はもちろん、私の代わりにABCDの実際のキーを使用していました。
のPython:
import boto3
conn = boto3.client('s3',
region_name="eu-west-1",
endpoint_url="endpoint",
aws_access_key_id=aws_access_key_id,
aws_secret_access_key=aws_secret_access_key,
config=Config(signature_version="s3", s3={'addressing_style': 'path'}))
しかしそれはname'aws_access_key_id' is not defined
言います。どうすれば修正できますか?おかげ
編集:あなたは資格情報はAWSの資格情報がすでに作成してフォルダを持っている場合
>>> os.environ['AWS_SHARED_CREDENTIALS_FILE']
'/app/.aws/credentials'
を上長命の資格情報を保管しないでくださいサーバーを避けることができます。一時的な資格情報(http://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2.html)を使用してアクセス許可を与えるには、IAMロールを使用します。 – jarmod
アドバイスをいただきありがとうございますが、私はAmazonによってホストされていないS3サービスを使用しています。 – user3080315