AWS Transfer FamilyサーバーでSETSTATコマンドを無視する
AWS Transfer Familyサーバーで、SETSTATコマンドを無視できるようになりました。2022年6月のことです。
ファイルをアップロードするとき、ファイル転送クライアントは SETSTAT コマンドを発行してリモートファイルの属性を変更します。ただし、SETSTAT コマンドはオブジェクトストレージシステムと互換性がないため、クライアントが Amazon S3 にファイルをアップロードするときにエラーが発生することがあります。今回のリリースによって、SETSTAT コマンドを無視するよう Transfer Family サーバーを設定し、SETSTAT が引き起こすエラーに悩まされずにファイルをアップロードできるようになりました。
無視するには、サーバーの作成時や更新時に ProtocolDetails
オプションの SetStatOption
の値を ENABLE_NO_OP
にします。
- When you call the
CreateServer
orUpdateServer
API, use theProtocolDetails
option SetStatOption to ignore the error that is generated when the client attempts to use SETSTAT on a file you are uploading to an S3 bucket.- Set the value to
ENABLE_NO_OP
to have the Transfer Family server ignore the SETSTAT command, and upload files without needing to make any changes to your SFTP client.https://docs.aws.amazon.com/transfer/latest/userguide/transfer-file.html#avoid-set-stat
なお、AWS CLIで設定する場合は、2.7.2以降を使う必要があります。
* api-change:``transfer``: AWS Transfer Family now supports SetStat server configuration option, which provides the ability to ignore SetStat command issued by file transfer clients, enabling customers to upload files without any errors.
https://raw.githubusercontent.com/aws/aws-cli/2.7.2/CHANGELOG.rst
実行例
$ aws transfer update-server \
> --server-id s-***************** \
> --protocol-details SetStatOption=ENABLE_NO_OP
{
"ServerId": "s-*****************"
}
$ aws transfer describe-server \
> --server-id s-***************** \
> --query Server.ProtocolDetails
{
"PassiveIp": "AUTO",
"TlsSessionResumptionMode": "ENFORCED",
"SetStatOption": "ENABLE_NO_OP"
}
古いAWS CLIでのエラー例
$ aws transfer update-server \
> --server-id s-***************** \
> --protocol-details SetStatOption=ENABLE_NO_OP
Parameter validation failed:
Unknown parameter in ProtocolDetails: "SetStatOption", must be one of: PassiveIp
Discussion