OutSystemsでAWS S3を操作する。
外部システムとのファイル連携でAWSのS3を使っているため、OutSystemsからS3を操作しています。
FORGEからインストールをした「AdvancedAmazonS3」モジュールを使っています。
「AdvancedAmazonS3」には、S3FileとAmazonTokenというStructureが用意されているので
そこに必要なパラメータをセットします。
S3File Bucket=バケット名 SubFolder=サブフォルダ名 Key=ファイル名 AmazonToken AccessKey=アクセスキー SecretKey=シークレットアクセスキー
上記をセットしてFetchFileを呼び出すと
戻り値のS3File.Contentでファイルのバイナリーデータを取得できました。
パラメータのS3File.ContentにバイナリデータをセットしてSaveFileを呼び出すと
S3にファイルを保存することができました。
できてしまうととても簡単なのですが
これを作っていて引っかかったのが、パラメータ「Key」の指定の仕方でした。
「AWS Tools for Windows PowerShell」でS3を操作するときは
Write-S3Object -BucketName "BucketName" -File "c:\temp\test.txt" -Key "/SubFolder/FileName"
のような感じで、Keyにサブフォルダ名とファイル名を一緒に渡せたのですが
「AdvancedAmazonS3」では一緒に渡すとNGで、分けて渡す必要がありました。
× Key="/SubFolder/FileName" ○ SubFolder="SubFolder"(※末尾にスラッシュを付けない) Key="FileName"
この渡し方が書いてあるドキュメントを見つけられず
パラメータの渡し方をいろいろ試してやっとのことでS3にアクセスできました。
あと、FetchFileを呼んで指定したファイルがないとExceptionが発生してErrorログが出るため
ファイルの存在チェックのたびにErrorログが出てしまい、存在チェックをあきらめました。
Errorログを出さないようにする方法がわかればよかったのですが。。