Есть ли способ обработки учетных данных Amazaon S3 через переменные среды в сценарии Teradata TPT - PullRequest
0 голосов
/ 23 октября 2019

Я устанавливаю свой сценарий TPT terdata с S3 и хочу использовать переменную файла среды в сценарии TPT для учетных данных amazon S3 вместо жесткого ключа доступа, идентификатора доступа и региона.

Есть мысли?

DEFINE JOB EXPORT_FROM_TERADATA DESCRIPTION 'Export data from Teradata to Amazon S3' 

( STEP EXPORT_THE_DATA 
        ( APPLY TO OPERATOR 
                ( $FILE_WRITER() ATTR 
                             ( AccessModuleName = 'libs3axsmod.so',Format = 'Delimited' , AccessModuleInitStr = 'S3Bucket=nn-model-sagemaker-test S3Region=eu-west-1 S3Object=tpt/testdata S3SinglePartFile=False S3AccessID=AKIZZZZZZZZZZZZZZU S3AccessKey=kxxxxxxxxxxxxxxxx7' ) 
                 ) 
                 SELECT * FROM OPERATOR ( $EXPORT ATTR ( UserName = @TargetUserName , UserPassword = @TargetUserPassword, TdpId = @TargetTdpId , SelectStmt = 'SELECT TOP 10 * FROM database.table;' ) ); 
         ); 
);

Жестко закодированные учетные данные работают в сценарии TPT, но переменные - нет.

( AccessModuleName = 'libs3axsmod.so',Format = 'Delimited' ,
 AccessModuleInitStr = 'S3Bucket=@model-test S3Region=S3AXMS3Region S3AccessID=S3AXMS3AccessID S3AccessKey=S3AXMS3AccessKey' ) 

1 Ответ

1 голос
/ 23 октября 2019

Вы не можете получить доступ к переменным среды внутри скрипта TPT, но вы можете использовать ключ -u в командной строке, чтобы оболочка передавала значения переменных среды как переменные скрипта TPT.

tbuild -f scriptfile -u "S3Rgn='$S3AXMS3Region' …"

И вы можете использовать конкатенацию строк для создания AccessModuleInitStr

AccessModuleInitStr='S3Bucket='''||@model-test||''' S3Region='''||@S3Rgn||''' … '

Обратите внимание, что вы можете получить AccessID и AccessKey из файла учетных данных и Region из файла конфигурации (и простоукажите соответствующий S3Profile в строке инициализации).

...