簡體   English   中英

boto3 upload_file,如何傳遞aws密鑰?

[英]boto3 upload_file, how to pass aws keys?

我目前正在使用此boto3 upload_file 文檔中的 upload_file function 將 CSV 從 AWS 並行集群(?)實例上傳到 S3 存儲桶。

import logging
import boto3
from botocore.exceptions import ClientError


def upload_file(file_name, bucket, object_name=None):
    """Upload a file to an S3 bucket

    :param file_name: File to upload
    :param bucket: Bucket to upload to
    :param object_name: S3 object name. If not specified then file_name is used
    :return: True if file was uploaded, else False
    """

    # If S3 object_name was not specified, use file_name
    if object_name is None:
        object_name = file_name

    # Upload the file
    s3_client = boto3.client('s3')
    try:
        response = s3_client.upload_file(file_name, bucket, object_name)
    except ClientError as e:
        logging.error(e)
        return False
    return True

在該文檔 url 上,它還列出了一個 ExtraArgs 參數

s3.upload_file('FILE_NAME', 'BUCKET_NAME', 'OBJECT_NAME', ExtraArgs={'Metadata': {'mykey': 'myvalue'}} )

這是我的嘗試/理解:
所以,我正在嘗試將我的 aws_access_key_id 和 aws_secret_access_key 添加到 ExtraArgs,但這是正確的方法嗎?

upload_file(year_month + ".csv", "bucket", "object_name" + year_month + ".csv", ExtraArgs={'Metadata': {'aws_access_key_id': 'X', 'aws_secret_access_key': 'Y'}})  

因為這不起作用:

upload_file(year_month + ".csv", "bucket", "object_name" + year_month + ".csv")

謝謝

正如其他用戶建議的那樣,最好的方法是在環境變量或角色中配置您的訪問密鑰(如果是 AWS 內部的資源,如 Lambda、EC2 實例等),但如果您 go 用於不良做法或只是在本地應用程序上工作,將這些數據作為變量包含在代碼中的方式是

s3_client = boto3.client('s3', aws_zone, aws_access_key_id=key_id, aws_secret_access_key=access_key)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM