2017-02-01 8 views
0

Redshift Copy CommandをSQLスクリプトで使用しようとしていますが、アクセスキーとシークレットキーをシェル変数に渡す必要があります。 Redshift Copy Commandのフォーマットのために、私はシェル変数を渡すことができません。アクセスキーとシークレットキーシェル変数をRedshift Copyコマンドに渡す方法

COPY ${REDSHIFT_SCHEMA_NAME}.${REDSHIFT_TABLE_NAME} FROM ${S3_SOURCE} credentials 'aws_access_key_id=${AWS_ACCESS_KEY_ID};aws_secret_access_key=${AWS_SECRET_ACCESS_KEY}' delimiter '${DELIMITER}' COMPUPDATE OFF STATUPDATE OFF; 

私が直面しています問題はAWS_SECRET_ACCESS_KEYであり、それらの両方が1つの引用符「」であるようAWS_ACCESS_KEY_IDは解決しません。コピーコマンドのフォーマットが不正になり

COPY ${REDSHIFT_SCHEMA_NAME}.${REDSHIFT_TABLE_NAME_BACKLOG} FROM ${S3_SOURCE} credentials aws_access_key_id='${AWS_ACCESS_KEY_ID}';aws_secret_access_key='${AWS_SECRET_ACCESS_KEY}' delimiter '${DELIMITER}' COMPUPDATE OFF STATUPDATE OFF; 

などのコマンドを使用してオン

。 他の解決策はありますか?

答えて

0

Amazonは、かなり良いドキュメントを提供しています。私はあなたがグーグルで探しているものを見つけ :「赤方偏移シェルコピー」

をここでは、作業シェルスクリプトとの記事です:

https://aws.amazon.com/articles/1143507459230804

私はこれを使用し、それは私のために動作します:私が探しています何

#!/bin/bash 
set -eu 

AWS_ACCESS_KEY_ID='my_access_key' 
AWS_SECRET_ACCESS_KEY='my_secret_access_key' 

REDSHIFT_SCHEMA_NAME='redshift_schema_name' 
REDSHIFT_TABLE_NAME_BACKLOG='redshift_table_name_backlog' 
S3_SOURCE='s3_source' 
DELIMITER='delimiter' 

cmd="COPY ${REDSHIFT_SCHEMA_NAME}.${REDSHIFT_TABLE_NAME_BACKLOG} FROM ${S3_SOURCE} credentials aws_access_key_id='${AWS_ACCESS_KEY_ID}';aws_secret_access_key='${AWS_SECRET_ACCESS_KEY}' delimiter '${DELIMITER}' COMPUPDATE OFF STATUPDATE OFF;" 
echo $cmd 
+0

は、スクリプトファイルにシェル変数の置換である彼らは直接bashの – Freeman

+0

上でそれらを使用する上で解決するのに対し、変数は、スクリプトファイルには解決しない、あなたは多分全体シェルSCRIを提供することができpt? –

+0

プロパティとして入力ファイルとスクリプトファイルを入力し、SQLクエリを実行するJavaコードがあります。変数をプロパティファイルに渡すことができます。 aws_access_key_id = $ {AWS_ACCESS_KEY_ID}; aws_secret_access_key = $ {AWS_SECRET_ACCESS_KEY} 'は一意引用符で囲まれており、変数はプロパティファイルから解決できません。 – Freeman

関連する問題