IAMロール認証情報を使用してPythonでS3にアンロードする

user8834780

Redshiftでは、次のコマンドを実行して、テーブルからS3のファイルにデータをアンロードします。

unload('select * from table')
to 's3://bucket/unload/file_'
iam_role 'arn:aws:iam:<aws-account-id>:role/<role_name>'

Pythonでも同じことをしたいのですが、これを複製する方法について何か提案はありますか?アクセスキーとシークレットを使用した例を見ましたが、それは私にとってオプションではありません。非公開バケットでロールベースの資格情報を使用する必要があります。

ジョン・ハンリー

2セットの資格情報が必要になります。S3バケットにアクセスするためのIAMロールを介したIAMクレデンシャルと、SQLコマンドを実行するためのRedshiftODBCクレデンシャル。

SQL Serverなどの他のデータベースと同様の方法で、Redshiftに接続するPythonプログラムを作成し、クエリを実行します。このプログラムには、IAM認証情報(Redshiftユーザー名、パスワード)ではなく、Redshiftログイン認証情報が必要です。

S3のIAM認証情報は、Redshiftが結果をS3に保存できるように、役割としてRedshiftに割り当てられます。これは、iam_role 'arn:aws:iam:<aws-account-id>:role/<role_name>'質問のRedshiftクエリの一部です。

Redshift API(Redshift内に保存されているデータベースにアクセスしない)と実際にインターフェースする予定がない限り、Redshiftにアクセスするためにboto3(またはboto)は必要ありません。

RedshiftにアクセスするためのPythonプログラムの例を次に示します。このコードへのリンクはここにありますVarunVermaによるクレジット

あなたが始めるのを助けるためにインターネット上に他の例があります。

############ REQUIREMENTS ####################
# sudo apt-get install python-pip 
# sudo apt-get install libpq-dev
# sudo pip install psycopg2
# sudo pip install sqlalchemy
# sudo pip install sqlalchemy-redshift
##############################################

import sqlalchemy as sa
from sqlalchemy.orm import sessionmaker

#>>>>>>>> MAKE CHANGES HERE <<<<<<<<<<<<< 
DATABASE = "dbname"
USER = "username"
PASSWORD = "password"
HOST = "host"
PORT = ""
SCHEMA = "public"      #default is "public" 

####### connection and session creation ############## 
connection_string = "redshift+psycopg2://%s:%s@%s:%s/%s" % (USER,PASSWORD,HOST,str(PORT),DATABASE)
engine = sa.create_engine(connection_string)
session = sessionmaker()
session.configure(bind=engine)
s = session()
SetPath = "SET search_path TO %s" % SCHEMA
s.execute(SetPath)
###### All Set Session created using provided schema  #######

################ write queries from here ###################### 
query = "unload('select * from table') to 's3://bucket/unload/file_' iam_role 'arn:aws:iam:<aws-account-id>:role/<role_name>';"
rr = s.execute(query)
all_results =  rr.fetchall()

def pretty(all_results):
    for row in all_results :
        print "row start >>>>>>>>>>>>>>>>>>>>"
        for r in row :
            print " ----" , r
        print "row end >>>>>>>>>>>>>>>>>>>>>>"


pretty(all_results)


########## close session in the end ###############
s.close()

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

IAMロール認証情報を使用してPythonでS3にファイルをアップロードできません

分類Dev

S3一時認証情報を使用してJavascriptでファイルをアップロードする方法

分類Dev

Dockerコンテナーで実行されているコードにAWS認証情報(IAMロール認証情報)を渡す

分類Dev

[Node JS AWS SDK] IAMロールを想定したS3へのアップロード時に認証情報がありません

分類Dev

認証情報なしのPythonを使用してパブリックAWS S3からファイル/フォルダーをダウンロード

分類Dev

PHPを使用したAWSサービスの認証情報にIAMサービスロールを使用する

分類Dev

ローカルマシンからIAMロールを使用してS3にアクセスする方法

分類Dev

サービスアカウントの認証情報を使用してGoogleドライブにファイルをアップロードする方法

分類Dev

IAMロールを使用したAWSSESSMTP認証情報の作成

分類Dev

AWS S3にファイルをアップロード/ダウンロードする前に、Webサーバーで認証します

分類Dev

Pythonを使用した認証なしでパブリックS3バケットにファイルをダウンロードする

分類Dev

Windows認証を使用してASP.NETMVC 5のセッションにユーザー情報をロードできる場所はどこですか?

分類Dev

AWS4認証を使用してbash経由でs3にファイルをアップロードしますか?

分類Dev

EC2IAMロールからの一時的な認証情報を使用してEMRジョブフローを起動できない

分類Dev

EC2IAMロールからの一時的な認証情報を使用してEMRジョブフローを起動できない

分類Dev

Node.jsはAWSEC2IAMロール認証情報でsignedurlを取得します

分類Dev

Androidのログイン資格情報を使用してサーバーを認証するにはどうすればよいですか?

分類Dev

AppSync:AWS_IAM認証を使用するときに$ contextでユーザー情報を取得します

分類Dev

AWSサービスにアクセスするときにIAM認証情報ローテーションを処理する方法

分類Dev

GradleでAWSロール認証情報を取得する

分類Dev

Androidを使用してs3バケットに画像をアップロードする際の認証の問題

分類Dev

コマンドラインからGCP認証情報をエアフローに追加する

分類Dev

サービスアカウントの認証情報をダウンロードせずに、Google Compute EngineからローカルでGoogle API(Google Drive API)を認証するにはどうすればよいですか?

分類Dev

AWS認証情報を取得してDockerのS3にアクセスする方法

分類Dev

AWS認証情報を自動的に更新してオンプレミスサーバーからS3オブジェクトにアクセスすることは可能ですか?

分類Dev

IAMロールを使用してEC2インスタンスからのみアクセスできるようにするには、S3バケットにどのアクセス許可を割り当てる必要がありますか?

分類Dev

C#.NETコアコンソールプログラムでAWS認証情報を指定する方法

分類Dev

Pythonを使用してGoogleドメインのユーザープロファイル情報にアクセスする

分類Dev

特定の資格情報を使用してIonicCloudにアップロードする

Related 関連記事

  1. 1

    IAMロール認証情報を使用してPythonでS3にファイルをアップロードできません

  2. 2

    S3一時認証情報を使用してJavascriptでファイルをアップロードする方法

  3. 3

    Dockerコンテナーで実行されているコードにAWS認証情報(IAMロール認証情報)を渡す

  4. 4

    [Node JS AWS SDK] IAMロールを想定したS3へのアップロード時に認証情報がありません

  5. 5

    認証情報なしのPythonを使用してパブリックAWS S3からファイル/フォルダーをダウンロード

  6. 6

    PHPを使用したAWSサービスの認証情報にIAMサービスロールを使用する

  7. 7

    ローカルマシンからIAMロールを使用してS3にアクセスする方法

  8. 8

    サービスアカウントの認証情報を使用してGoogleドライブにファイルをアップロードする方法

  9. 9

    IAMロールを使用したAWSSESSMTP認証情報の作成

  10. 10

    AWS S3にファイルをアップロード/ダウンロードする前に、Webサーバーで認証します

  11. 11

    Pythonを使用した認証なしでパブリックS3バケットにファイルをダウンロードする

  12. 12

    Windows認証を使用してASP.NETMVC 5のセッションにユーザー情報をロードできる場所はどこですか?

  13. 13

    AWS4認証を使用してbash経由でs3にファイルをアップロードしますか?

  14. 14

    EC2IAMロールからの一時的な認証情報を使用してEMRジョブフローを起動できない

  15. 15

    EC2IAMロールからの一時的な認証情報を使用してEMRジョブフローを起動できない

  16. 16

    Node.jsはAWSEC2IAMロール認証情報でsignedurlを取得します

  17. 17

    Androidのログイン資格情報を使用してサーバーを認証するにはどうすればよいですか?

  18. 18

    AppSync:AWS_IAM認証を使用するときに$ contextでユーザー情報を取得します

  19. 19

    AWSサービスにアクセスするときにIAM認証情報ローテーションを処理する方法

  20. 20

    GradleでAWSロール認証情報を取得する

  21. 21

    Androidを使用してs3バケットに画像をアップロードする際の認証の問題

  22. 22

    コマンドラインからGCP認証情報をエアフローに追加する

  23. 23

    サービスアカウントの認証情報をダウンロードせずに、Google Compute EngineからローカルでGoogle API(Google Drive API)を認証するにはどうすればよいですか?

  24. 24

    AWS認証情報を取得してDockerのS3にアクセスする方法

  25. 25

    AWS認証情報を自動的に更新してオンプレミスサーバーからS3オブジェクトにアクセスすることは可能ですか?

  26. 26

    IAMロールを使用してEC2インスタンスからのみアクセスできるようにするには、S3バケットにどのアクセス許可を割り当てる必要がありますか?

  27. 27

    C#.NETコアコンソールプログラムでAWS認証情報を指定する方法

  28. 28

    Pythonを使用してGoogleドメインのユーザープロファイル情報にアクセスする

  29. 29

    特定の資格情報を使用してIonicCloudにアップロードする

ホットタグ

アーカイブ