簡體   English   中英

如何在 AWS s3 和 AWS ec2 之間傳輸文件

[英]How to transfer files between AWS s3 and AWS ec2

我正在使用 AWS ec2 實例。 在這種情況下,我生成了一些文件。 這些操作由用戶數據完成。

現在我想通過在用戶數據本身中編寫代碼來將這些文件存儲在 s3 上。

  • 那么如何將這些文件存儲在 s3 上呢?
  • 有關於它的教程嗎?

使用最新的 AWS CLI ( http://aws.amazon.com/cli/ ),您可以使用以下命令將文件從您的 Ec2 實例甚至您的本地機器復制到 S3 存儲。

aws s3 cp myfolder s3://mybucket/myfolder --recursive

然后你會得到類似的東西:

upload: myfolder/file1.txt to s3://mybucket/myfolder/file1.txt 
upload: myfolder/subfolder/file1.txt to s3://mybucket/myfolder/subfolder/file1.txt

如果這是您第一次使用aws CLI 工具,那么您需要運行:

aws configure

這將要求您輸入您的訪問密鑰和秘密以及指定默認區域。

有多種方法可以將文件發送到 S3。 我在下面列出了它們以及相關的安裝和文檔。

PHP 實現的一個例子:

<?php

    // Simple PUT:
    if (S3::putObject(S3::inputFile($file), $bucket, $uri, S3::ACL_PRIVATE)) {
        echo "File uploaded.";
    } else {
        echo "Failed to upload file.";
    }

?>

s3cmd 的一個例子:

s3cmd put my.file s3://bucket-url/my.file

編輯

另一個值得一提的選項是 AWS CLI http://aws.amazon.com/cli/這是廣泛可用的,例如它已經包含在 AmazonLinux 中,可以通過 Python 下載(安裝在許多系統上,包括 linux 和 windows) .

http://docs.aws.amazon.com/cli/latest/reference/s3/index.html

可用命令,cp ls mb mv rb rm sync 網站

http://docs.aws.amazon.com/cli/latest/reference/s3api/index.html用於與 S3 交互

s3cmd包安裝為:

yum install s3cmd

要么

sudo apt-get install s3cmd

取決於您的操作系統。 然后用這個復制數據:

s3cmd get s3://tecadmin/file.txt

ls也可以列出文件。

有關更多詳細信息,請參閱

我正在使用s3cmd來存儲每晚從我的 ec2 實例導出的數據庫備份文件。 配置 s3cmd 后,您可以在他們的站點上閱讀相關信息,然后可以運行如下命令:

s3cmd put ./myfile s3://mybucket

為此使用s3cmd

s3cmd get s3://AWS_S3_Bucket/dir/file

在此處查看如何安裝 s3cmd:

這對我有用...

所有將 s3 掛載為偽文件系統的嘗試都是有問題的。 它是一個對象存儲,而不是一個塊設備。 如果您必須掛載它,因為您的遺留代碼必須具有本地文件路徑,請嘗試 goofys。 它比 s3fs 快大約 50 倍。 https://github.com/kahin/goofys

這些天s3cmd有點長。 如今,AWS cli 是更好的選擇。 語法不太方便,但它是您需要保留的少一個工具。

如果您可以堅持使用http訪問。 從長遠來看,它會讓你的生活更輕松。

在 AWS CLI 上,我使用以下命令將 zip 文件從 EC2 實例復制到 S3

aws s3 cp file-name.zip s3://bucket-name/

我認為通常最好的答案實際上是上面,使用aws命令,但是對於您不想安裝其他任何東西的情況,還值得一提的是,您可以通過 HTTPS 下載文件,例如 open瀏覽器並導航到:

https://s3.amazonaws.com/ (bucketName) / (relativePath) / (fileName)

這也意味着您可以只使用wgetcurl從 shell 提示進行傳輸。

我假設您需要從新實例復制到 s3。 首先創建一個 IAM 角色,這樣您就不需要運行 aws configure 並且這應該在啟動時都可以工作。 其次安裝 cli,然后在用戶數據中使用 aws cli 定義您的復制作業。 下面是 Ubuntu 18 的示例。將 IAM 角色分配給您的實例。

用戶數據:

#!/bin/bash
apt-get update -y
apt install awscli -y
aws s3 cp *Path of data* s3://*destination bucket*  -recursive *--other options*

創建 IAM 角色1. 轉到位於https://console.aws.amazon.com/iam/的 IAM 控制台 2. 在左窗格中,選擇角色,然后單擊創建角色。 3. 對於選擇可信實體類型,選擇 AWS 服務。 選擇 EC2。 選擇下一步:權限。 4. 對於附加權限策略,選擇包含所需權限的 AWS 托管策略或創建自定義策略。 5. 點擊服務選擇一個服務,在查找服務框中輸入 S3,點擊 S3,選擇操作(全部或讀+寫和其他你可能需要的) 6. 點擊資源,選擇資源(你可以輸入所有資源或限制為具有 ARN 的特定存儲桶) 7. 單擊下一步:查看策略。 輸入名稱和說明。 單擊創建策略。 8. 返回創建角色頁面,單擊刷新,按您指定的名稱過濾策略,選擇策略。 9. 單擊下一步:標簽,然后添加任何必需的標簽 10. 在查看頁面上,輸入角色的名稱和描述,然后單擊創建角色。

參考

暫無
暫無

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

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