CLIやWebコンソールから行える、RDSのスナップショットの作成をC#から行います。
パッケージ
前提
Visual Studio 2019
.NET Framework 4.7.2
Consoleアプリケーション
AWSSDK.RDS 3.5.8
ソースコード
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Amazon; using Amazon.RDS; using Amazon.RDS.Model; namespace AWS_SDK_TEST { class Program { static void Main(string[] args) { string awsAccessKeyId = "********************"; string awsSecretAccessKey = "****************************************"; RegionEndpoint region = RegionEndpoint.APNortheast1; AmazonRDSClient rdsClient = new AmazonRDSClient(awsAccessKeyId, awsSecretAccessKey, region); CreateDBSnapshotRequest request = new CreateDBSnapshotRequest() { DBInstanceIdentifier = "{インスタンスID}" , DBSnapshotIdentifier = "{スナップショット名}" }; CreateDBSnapshotResponse responce = rdsClient.CreateDBSnapshot(request); if (responce.HttpStatusCode == System.Net.HttpStatusCode.OK) { Console.WriteLine("スナップショット作成開始"); Console.WriteLine("DBSnapshot.Status:" + responce.DBSnapshot.Status); } else { Console.WriteLine("スナップショット作成失敗"); } } } }
解説
CreateDBSnapshotRequest とCreateDBSnapshot関数を使って作成を行います。 CLIやWebコンソールと同様に作成といっても作成を開始するだけで、作成完了まで待機しません。 作成後のステータスは、「responce.DBSnapshot.Status」で確認が可能ですが、型がStringのためステータスの判定を行うのが厄介です。
SDKのリファレンスには、定数の一覧が記載されていませんでしたが、RDSのリファレンスのDB instance statusの英語表記が一致していると思います。
DB instance status - Amazon Relational Database Service
注意事項
認証情報をソースコードに、サンプルを簡潔にするためにアクセスキーとシークレットキーを直接指定していますが、実際に開発を行う場合には、プロファイルの利用が推奨されています。 AWS 認証情報の設定 - AWS SDK for .NET(バージョン 3)