Сканирование корзины S3, загрузка только zip-файлов в корзину S3 - PullRequest
0 голосов
/ 10 июня 2019

Вот мой код для загрузки файлов моих файлов с сервера onprem в корзину S3, и код работает, когда я указываю файл, который хочу загрузить.

import boto3
import sys, ast
import io
import os
from zipfile import ZipFile
import json
from pprint import pprint
import urllib.request
import traceback
from datetime import datetime


accesskey = sys.argv[1]
secretkey = sys.argv[2]
sessiontoken = sys.argv[3]
kmskeyid = sys.argv[4]
filepath = sys.argv[5]
s3bucket = sys.argv[6]
s3key = sys.argv[7]

try:
    s3_client = boto3.client(
        's3',
        aws_access_key_id = accesskey,
        aws_secret_access_key = secretkey,
        aws_session_token = sessiontoken,
        region_name="us-east-1"
    )
except Exception as e:
    print("[ERROR]\nFAILURE CREATING S3 CLIENT!")
    traceback.print_exc()
    sys.exit(1)

def upload_file_to_s3():
    #s3_client.upload_file(version + '.zip', s3bucket, s3key,ExtraArgs={"ServerSideEncryption": "aws:kms", "SSEKMSKeyId": "arn:aws:kms:us-east-1:XXXX"})
    with open(filepath, 'rb') as code:
        s3_client.upload_fileobj(code, s3bucket, s3key,ExtraArgs={"ServerSideEncryption": "aws:kms", "SSEKMSKeyId": kmskeyid})


try:
    print('Uploading object to S3 bucket: ' + s3bucket + "/" + s3key)
    upload_file_to_s3()
    print("[INFO]\nFile successfully uploaded to S3.")
except Exception as e:
    print("[ERROR]\nFAILURE UPLOADING TO S3!")
    traceback.print_exc()
    sys.exit(1)

Команда, которую я запускаю из моего onpremсервер:

python3 ./scripts/python/upload_file_to_s3_min.py $AWS_ACCESS_KEY_ID $AWS_SECRET_ACCESS_KEY $AWS_SESSION_TOKEN $AWS_KMS_KEY_ID *.zip* $AWS_BUCKET deploy/scripts/

Сообщение об ошибке:

Uploading object to S3 bucket: file2.zip/file3.zip
[ERROR]
FAILURE UPLOADING TO S3!
Build step 'Execute shell' marked build as failure
Finished: FAILURE

По какой-то причине скрипт не передает $ bucketname

Спасибо,

1 Ответ

0 голосов
/ 10 июня 2019

Некоторые общие отзывы ...

Люди обычно хранят свои учетные данные AWS в файле конфигурации.Это можно сделать с помощью интерфейса командной строки AWS (CLI) и командой aws configure.

После того, как учетные данные сохранены таким образом, вашему коду не нужноссылаться на любые полномочия.Они будут автоматически обнаружены.

Итак, ваш код может быть таким простым:

s3_client = boto3.client('s3', region_name="us-east-1")

with open(filepath, 'rb') as code:
    s3_client.upload_fileobj(code, s3bucket, s3key,ExtraArgs={"ServerSideEncryption": "aws:kms", "SSEKMSKeyId": kmskeyid})

Если вы намереваетесь просто вызвать это из командной строки, то вместо записисвой собственный скрипт, вы можете просто использовать команду CLI AWS:

aws s3 cp foo.zip s3://my-bucket/foo.zip --sse-kms-key-id xxx 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...