コンテンツまでスキップ

08. AWS Marketplace版 Mashuサーバー利用方法

この記事では、AWS Marketplace で提供されているMashuサーバーの利用開始手順について説明します。

この手順を実行すると、AWS環境でMashuサーバーを実行しRDSからメタデータを取得できるようになります。

AWS Marketplace からMashuサーバーを検索する

AWS Marketplaceにアクセスして「製品を検出」メニューを選択してください。検索ボックスに「Mashu」と入力して検索して「Mashu Server for AWS」という製品を見つけてください。

awsmarketplace1

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

awsmarketplace2

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をコピーします。

awsmarketplace3

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

awsmarketplace4

Mashuサーバーのバージョンを更新する

セットアップスクリプトの<VERSION>を更新先のバージョンで指定してスクリプトを実行してください。

$ ./setup.sh  <ACCOUNT_ID> <REGION> <VERSION>

その後は Mashuサーバーをデプロイする と同じ手順でデプロイするとMashuサーバーが更新できます。