簡體   English   中英

嘗試同步 lambda 中的兩個 s3 存儲桶

[英]Trying to sync two s3 buckets in lambda

我是 AWS 新手,我正在嘗試同步 2 個 s3 存儲桶

這是原始存儲桶https://s3-us-west-2.amazonaws.com/css490/input.txt的鏈接

原始 s3 存儲桶是公開的,但不是來自我的帳戶,第二個也是公開的,但是來自我的帳戶的 s3

我正在使用右上角的測試按鈕,它顯示成功,但 program-4(接收桶)仍然是空的。

(可能是因為我使用的是測試按鈕,但我不知道)

加上我如何在 HTML 中調用這個 function?

對評論的回應:

xy 問題?:我正在同步它們,因為我需要將數據從其他人的 s3 存儲桶復制到我的 s3 存儲桶

注意:我每次都需要覆蓋數據(即使文件存在)

另一個鏈接可能有幫助,但它也沒有答案(順便說一句,我也問了那個問題)

import json
import boto3
import os
import subprocess



def lambda_handler(event, context):
    
    # link the 2 s3 buckets
    subprocess(['aws', 's3', 'sync', 's3://css490', 's3://program-4'])
    
    #arn:aws:s3:::program-4

    return {
        'statusCode': 200
    }

默認情況下,AWS CLI 未安裝在 Lambda 環境中。

請參閱: 如何在 Lambda function 中使用 AWS CLI(來自 Lambda 的 aws s3 同步)::Ilya Bezdelev

此外,您應該使用subprocess.run()來運行子進程。 我很驚訝您沒有在控制台中看到有關這些問題的錯誤。

雖然您可以將 AWS CLI package 轉換為 Lambda function,但我建議您自己簡單地執行這些功能:

  • 使用ListBucket()列出源存儲桶
  • 遍歷對象並使用CopyObject()將每個 object 復制到目標存儲桶

如果您只想復制,試試這個: aws s3 cp --recursive s3://SOURCE_BUCKET_NAME s3://SOURCE_BUCKET_NAME

暫無
暫無

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

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