是否可以通过Teradata TPT脚本中的环境变量来处理Amazaon S3凭据
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了是否可以通过Teradata TPT脚本中的环境变量来处理Amazaon S3凭据相关的知识,希望对你有一定的参考价值。
我正在用S3设置我的terdata TPT脚本,并希望在TPT脚本中使用环境文件变量来获取Amazon S3凭据,而不是硬编码访问密钥,accessId和区域。
有什么想法吗?
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' )
答案
您无法在TPT脚本中访问环境变量,但是可以在命令行上使用-u开关,以使外壳程序将环境变量的值作为TPT脚本变量传递。
tbuild -f scriptfile -u "S3Rgn='$S3AXMS3Region' …"
并且您可以使用字符串串联来创建AccessModuleInitStr
AccessModuleInitStr='S3Bucket='''||@model-test||''' S3Region='''||@S3Rgn||''' …
[请注意,您可以从凭据文件中获取AccessID和AccessKey,从配置文件中获取Region(只需在Init String中指定相应的S3Profile)。
以上是关于是否可以通过Teradata TPT脚本中的环境变量来处理Amazaon S3凭据的主要内容,如果未能解决你的问题,请参考以下文章
Teradata 5.1:使用代码将表导出到csv / txt / xls
使用 EF Code First 继承 – 每个类型的表 (TPT)
想在python脚本里面source .profile,调用os.system后在当前运行的脚本里环境变量没有变呢?求解决方法。