オンプレミス環境上で動作するMashuサーバーを設定する方法は、こちらの記事に解説していますが、本記事では、Windows 11 にDocker...
08. AWS Marketplace版 Mashuサーバー利用方法
この記事では、AWS Marketplace で提供されているMashuサーバーの利用開始手順について説明します。
この手順を実行すると、AWS環境でMashuサーバーを実行してRDSからメタデータを取得できるようになります。
AWS Marketplace からMashuサーバーを検索する
AWS Marketplaceにアクセスして「製品を検出」メニューを選択してください。検索ボックスに「Mashu」と入力して検索して「Mashu Server for AWS」という製品を見つけてください。

「購入オプションを表示」ボタンから「Mashu Server for AWS」をサブスクライブします。「Mashu Server for AWS」自体の料金は無料です。ただし、デプロイしたAWSリソース(API Gateway, AWS Lambda, etc.)の利用料金がかかります。

Mashuサーバーをデプロイする
「ソフトウェアを起動する」ボタンをクリックするとデプロイに関するドキュメントが確認できます。
ECRのプライベートにコンテナイメージを登録する
「デプロイテンプレート」のScriptリンクをクリックするとMarketplaceで提供されたコンテナイメージを自分のアカウントのECRに登録するスクリプトがダウンロードできます。このスクリプトを以下のように実行すると自分のアカウントにコンテナイメージが登録できます。
$ ./setup.sh <ACCOUNT_ID> <REGION> <VERSION>
- ACCOUNT_ID: 自分のAWSアカウントID
- REGION: コンテナイメージ登録先ECRのリージョン
- VERSION: Marketplaceで提供されているコンテナのバージョン
CloudFormationでコンテナをデプロイする
「デプロイテンプレート」のDeployリンクをクリックするとCloudFormationのUIが表示されます。
デプロイに必要なIAMロールの権限
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "CloudFormationPermissions",
"Effect": "Allow",
"Action": [
"cloudformation:CreateStack",
"cloudformation:UpdateStack",
"cloudformation:DeleteStack",
"cloudformation:DescribeStacks",
"cloudformation:DescribeStackEvents",
"cloudformation:DescribeStackResource",
"cloudformation:DescribeStackResources",
"cloudformation:GetTemplateSummary"
],
"Resource": "*"
},
{
"Sid": "IAMPermissions",
"Effect": "Allow",
"Action": [
"iam:CreateRole",
"iam:DeleteRole",
"iam:GetRole",
"iam:PassRole",
"iam:AttachRolePolicy",
"iam:DetachRolePolicy",
"iam:TagRole",
"iam:UntagRole"
],
"Resource": "arn:aws:iam::*:role/*"
},
{
"Sid": "EC2Permissions",
"Effect": "Allow",
"Action": [
"ec2:CreateSecurityGroup",
"ec2:DeleteSecurityGroup",
"ec2:DescribeSecurityGroups",
"ec2:AuthorizeSecurityGroupIngress",
"ec2:RevokeSecurityGroupIngress",
"ec2:DescribeSecurityGroupRules",
"ec2:DescribeVpcs",
"ec2:DescribeSubnets"
],
"Resource": "*"
},
{
"Sid": "LambdaPermissions",
"Effect": "Allow",
"Action": [
"lambda:CreateFunction",
"lambda:DeleteFunction",
"lambda:GetFunction",
"lambda:GetFunctionConfiguration",
"lambda:AddPermission",
"lambda:RemovePermission",
"lambda:UpdateFunctionCode",
"lambda:UpdateFunctionConfiguration",
"lambda:TagResource",
"lambda:UntagResource",
"lambda:ListTags"
],
"Resource": "*"
},
{
"Sid": "CloudWatchLogsPermissions",
"Effect": "Allow",
"Action": [
"logs:CreateLogGroup",
"logs:DeleteLogGroup",
"logs:DescribeLogGroups",
"logs:PutRetentionPolicy",
"logs:ListTagsLogGroup"
],
"Resource": "*"
},
{
"Sid": "ApiGatewayPermissions",
"Effect": "Allow",
"Action": [
"apigateway:POST",
"apigateway:GET",
"apigateway:PUT",
"apigateway:PATCH",
"apigateway:DELETE",
"apigateway:UpdateRestApiPolicy"
],
"Resource": "arn:aws:apigateway:*::/*"
}
]
}
スタックの作成 ステップ
作成ステップでは、変更せずそのまま「次へ」をクリックしてください。
スタックの詳細を指定 ステップ
詳細ステップでは、以下のパラメーターを設定します。
| パラメーター | 説明 |
| ImageUri |
事前に登録した自アカウントのECRイメージURIを指定します 。 例: <AccountID>.dkr.ecr.ap-northeast-1.amazonaws.com/mashu:latest |
| VpcId | RDSが稼働しているVPCのIDを指定します。 |
| LambdaSubnetIds |
Lambdaを配置するプライベートサブネットのIDを指定します(複数指定可能) 。 |
| RdsSecurityGroupId | 既存のRDS用セキュリティグループのIDを指定します。Lambdaからのアクセスを許可するルールが自動で追加されます。 |
| RdsFromPort |
RDSの開始ポート番号を指定します(PostgreSQLの場合は5432、MySQLの場合は3306)。 |
| RdsToPort |
RDSの終了ポート番号を指定します。単一ポートの場合はRdsFromPortと同じ値を指定してください。 |
| AllowedIps(任意) |
API Gatewayへのアクセスを許可するIPアドレス(CIDR形式)をカンマ区切りで指定します。空または0.0.0.0/0で全許可となります。 |
| LambdaMemorySize(任意) |
Lambdaのメモリサイズ(デフォルト: 512MB)。 |
| LambdaTimeout(任意) |
Lambdaのタイムアウト時間(デフォルト: 900秒)。 |
| LogRetentionInDays(任意) |
CloudWatch Logsのログ保持期間(デフォルト: 30日)。 |
スタックオプションの設定 ステップ
「AWS CloudFormation によって IAM リソースがカスタム名で作成される場合があることを承認します」にチェックを入れて「次へ」をクリックしてください。
確認して作成 ステップ
設定値に間違いがなければ「送信」ボタンをクリックしてデプロイしてください。
Mashuサーバーと接続する
先のステップでデプロイしたCloudFormationスタックの「出力」タブを開いて、ApiEndpointに記載されているURLをコピーします。

Mashuの画面を開いてコピーしたURLを貼り付け、「接続する」をクリックしてください。接続が成功すれば設定完了です。

Mashuサーバーのバージョンを更新する
セットアップスクリプトの<VERSION>を更新先のバージョンで指定してスクリプトを実行してください。
$ ./setup.sh <ACCOUNT_ID> <REGION> <VERSION>
その後は Mashuサーバーをデプロイする と同じ手順でデプロイするとMashuサーバーが更新できます。