選取您的 Cookie 偏好設定

我們使用提供自身網站和服務所需的基本 Cookie 和類似工具。我們使用效能 Cookie 收集匿名統計資料,以便了解客戶如何使用我們的網站並進行改進。基本 Cookie 無法停用,但可以按一下「自訂」或「拒絕」以拒絕效能 Cookie。

如果您同意,AWS 與經核准的第三方也會使用 Cookie 提供實用的網站功能、記住您的偏好設定,並顯示相關內容,包括相關廣告。若要接受或拒絕所有非必要 Cookie,請按一下「接受」或「拒絕」。若要進行更詳細的選擇,請按一下「自訂」。

設定對 Amazon S3 儲存貯體的存取權

焦點模式
設定對 Amazon S3 儲存貯體的存取權 - Amazon Relational Database Service

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

若要從 Amazon S3 檔案匯入資料,請授予 RDS for PostgreSQL 資料庫執行個體許可,以存取包含 檔案的 Amazon S3 儲存貯體。您可以透過以下兩個方式中的一個提供存取給 Amazon S3 儲存貯體,如下列主題中所述。

使用 IAM角色存取 Amazon S3 儲存貯體

從 Amazon S3 檔案載入資料之前,請授予 RDS for PostgreSQL 資料庫執行個體許可,以存取檔案所在的 Amazon S3 儲存貯體。這樣您就不必管理額外的登入資料資訊或在 aws_s3.table_import_from_s3 函數呼叫中提供它。

若要這麼做,請建立提供 Amazon S3 儲存貯體存取權IAM的政策。建立IAM角色並將政策連接至角色。然後將IAM角色指派給資料庫執行個體

透過IAM角色授予 RDS PostgreSQL 資料庫執行個體對 Amazon S3 的存取權
  1. 建立IAM政策。

    此政策提供儲存貯體和物件許可,讓您的 RDS適用於 PostgreSQL 資料庫執行個體存取 Amazon S3。

    在政策中包含下列必要動作,以允許將檔案從 Amazon S3 儲存貯體傳輸至 Amazon: RDS

    • s3:GetObject

    • s3:ListBucket

    在政策中包含下列資源,以識別 Amazon S3 儲存貯體和儲存貯體中的物件。這會顯示用於存取 Amazon S3 的 Amazon Resource Name (ARN) 格式。

    • arn:aws:s3:::amzn-s3-demo-bucket

    • arn:aws:s3:::amzn-s3-demo-bucket/*

    如需為 forRDS Postgre SQL建立IAM政策的詳細資訊,請參閱 建立並使用 IAM 政策進行 IAM 資料庫存取。另請參閱 IAM 使用者指南 中的教學課程:建立和連接您的第一個客戶受管政策

    下列 AWS CLI 命令會建立rds-s3-import-policy以這些選項命名IAM的政策。它授予名為 的儲存貯體存取權 amzn-s3-demo-bucket.

    注意

    記下此命令傳回之政策的 Amazon Resource Name (ARN)。當您將政策連接至IAM角色時,需要在後續步驟ARN中取得 。

    範例

    用於 Linux, macOS、 或 Unix:

    aws iam create-policy \ --policy-name rds-s3-import-policy \ --policy-document '{ "Version": "2012-10-17", "Statement": [ { "Sid": "s3import", "Action": [ "s3:GetObject", "s3:ListBucket" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket", "arn:aws:s3:::amzn-s3-demo-bucket/*" ] } ] }'

    用於 Windows:

    aws iam create-policy ^ --policy-name rds-s3-import-policy ^ --policy-document '{ "Version": "2012-10-17", "Statement": [ { "Sid": "s3import", "Action": [ "s3:GetObject", "s3:ListBucket" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket", "arn:aws:s3:::amzn-s3-demo-bucket/*" ] } ] }'
  2. 建立 IAM 角色。

    您可以這麼做,以便 Amazon RDS 可以擔任此IAM角色來存取您的 Amazon S3 儲存貯體。如需詳細資訊,請參閱 IAM 使用者指南 中的建立角色以將許可委派給IAM使用者

    建議您在資源型政策中使用 aws:SourceArnaws:SourceAccount 全域條件內容索引鍵,將服務的許可限定於特定資源。這是防止混淆代理人問題最有效的方式。

    如果同時使用這兩個全域條件內容索引鍵,且 aws:SourceArn 值包含帳戶 ID,則在相同政策陳述式中使用 aws:SourceAccount 值和 aws:SourceArn 值中的帳戶時,必須使用相同的帳戶 ID。

    • 如果您想要跨服務存取單一資源,請使用 aws:SourceArn

    • 如果您想要允許該帳戶中的任何資源與跨服務使用相關聯,請使用 aws:SourceAccount

    在政策中,請務必使用具有完整資源ARN的aws:SourceArn全域條件內容索引鍵。下列範例示範如何使用 AWS CLI 命令建立名為 的角色rds-s3-import-role

    範例

    用於 Linux, macOS、 或 Unix:

    aws iam create-role \ --role-name rds-s3-import-role \ --assume-role-policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "rds.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "111122223333", "aws:SourceArn": "arn:aws:rds:us-east-1:111122223333:db:dbname" } } } ] }'

    用於 Windows:

    aws iam create-role ^ --role-name rds-s3-import-role ^ --assume-role-policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "rds.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "111122223333", "aws:SourceArn": "arn:aws:rds:us-east-1:111122223333:db:dbname" } } } ] }'
  3. 將您建立IAM的政策連接至您建立IAM的角色。

    下列 AWS CLI 命令會將上一個步驟中建立的政策連接至名為rds-s3-import-role取代的角色ARN,your-policy-arn其具有您在先前步驟中記下的政策。

    範例

    用於 Linux, macOS、 或 Unix:

    aws iam attach-role-policy \ --policy-arn your-policy-arn \ --role-name rds-s3-import-role

    用於 Windows:

    aws iam attach-role-policy ^ --policy-arn your-policy-arn ^ --role-name rds-s3-import-role
  4. 將IAM角色新增至資料庫執行個體

    您可以使用 AWS Management Console 或 來執行此操作 AWS CLI,如下所述。

使用主控台新增 PostgreSQL 資料庫執行個體IAM的角色
  1. 登入 AWS Management Console 並在 開啟 Amazon RDS主控台https://console.aws.amazon.com/rds/

  2. 選擇 PostgreSQL 資料庫執行個體名稱以顯示其詳細資訊。

  3. 連線與安全索引標籤的管理IAM角色區段中,選擇要在此執行個體 新增角色 下新增IAM的角色

  4. 請在 Feature (功能) 下,選擇 s3Import

  5. 選擇 Add role (新增角色)

主控台

使用主控台新增 PostgreSQL 資料庫執行個體IAM的角色
  1. 登入 AWS Management Console 並在 開啟 Amazon RDS主控台https://console.aws.amazon.com/rds/

  2. 選擇 PostgreSQL 資料庫執行個體名稱以顯示其詳細資訊。

  3. 連線與安全索引標籤的管理IAM角色區段中,選擇要在此執行個體 新增角色 下新增IAM的角色

  4. 請在 Feature (功能) 下,選擇 s3Import

  5. 選擇 Add role (新增角色)

使用 新增 PostgreSQL 資料庫執行個體IAM的角色 CLI
  • 使用下列命令,將角色新增至名為 的 PostgreSQL 資料庫執行個體my-db-instance。Replace (取代) your-role-arn ARN 您在上一個步驟中記下的角色。使用 s3Import 作為 --feature-name 選項的值。

    範例

    用於 Linux, macOS、 或 Unix:

    aws rds add-role-to-db-instance \ --db-instance-identifier my-db-instance \ --feature-name s3Import \ --role-arn your-role-arn \ --region your-region

    用於 Windows:

    aws rds add-role-to-db-instance ^ --db-instance-identifier my-db-instance ^ --feature-name s3Import ^ --role-arn your-role-arn ^ --region your-region

使用 新增 PostgreSQL 資料庫執行個體IAM的角色 CLI
  • 使用下列命令,將角色新增至名為 的 PostgreSQL 資料庫執行個體my-db-instance。Replace (取代) your-role-arn ARN 您在上一個步驟中記下的角色。使用 s3Import 作為 --feature-name 選項的值。

    範例

    用於 Linux, macOS、 或 Unix:

    aws rds add-role-to-db-instance \ --db-instance-identifier my-db-instance \ --feature-name s3Import \ --role-arn your-role-arn \ --region your-region

    用於 Windows:

    aws rds add-role-to-db-instance ^ --db-instance-identifier my-db-instance ^ --feature-name s3Import ^ --role-arn your-role-arn ^ --region your-region

若要使用 Amazon 新增 PostgreSQL 資料庫執行個體IAM的角色RDSAPI,請呼叫 AddRoleToDBInstance操作。

若要使用 Amazon 新增 PostgreSQL 資料庫執行個體IAM的角色RDSAPI,請呼叫 AddRoleToDBInstance操作。

使用安全登入資料存取 Amazon S3 儲存貯體

如果您願意,您可以使用安全憑證來提供對 Amazon S3 儲存貯體的存取,而不是提供具有IAM角色的存取。要執行此操作,您可以指定 aws_s3.table_import_from_s3 函數呼叫中的 credentials 參數。

credentials 參數是類型 的結構aws_commons._aws_credentials_1,其中包含 AWS 憑證。請使用 aws_commons.create_aws_credentials 函數在 aws_commons._aws_credentials_1 結構設定存取金鑰及秘密金鑰,如下所示。

postgres=> SELECT aws_commons.create_aws_credentials( 'sample_access_key', 'sample_secret_key', '') AS creds \gset

建立 aws_commons._aws_credentials_1 結構之後,請使用 aws_s3.table_import_from_s3 函數搭配 credentials 參數來匯入資料,如下所示。

postgres=> SELECT aws_s3.table_import_from_s3( 't', '', '(format csv)', :'s3_uri', :'creds' );

或是您可在 aws_commons.create_aws_credentials 函數呼叫之中內嵌 aws_s3.table_import_from_s3 函數呼叫。

postgres=> SELECT aws_s3.table_import_from_s3( 't', '', '(format csv)', :'s3_uri', aws_commons.create_aws_credentials('sample_access_key', 'sample_secret_key', '') );

對 Amazon S3 的存取進行故障診斷

如果您在嘗試從 Amazon S3 匯入資料時遇到問題,請參閱下文以取得建議:

隱私權網站條款Cookie 偏好設定
© 2025, Amazon Web Services, Inc.或其附屬公司。保留所有權利。