CloudShellとAWSCLIを利用してAmazon Lightsail のDrupalサーバを最速で立てる

Drupal Advent Calendar 2021 21日目の記事になります。

AWSには[AWS Lightsail](https://aws.amazon.com/jp/lightsail/)という月額$3.5～から利用可能なVPSサービスがあります。今回は

[Amazon Lightsail でDrupal インスタンスを起動する](https://aws.amazon.com/jp/getting-started/hands-on/build-drupal-website/)

の「Amazon Lightsail で Drupal インスタンスを作成する」＋静的IP追加までをCloudShell+AWSCLIを利用して最速で立ててみます。

## ■ 免責事項

本手順は完全性、正確性、有用性、安全性などを保証するものではありません。
本手順に基づき実施した判断および起こした行動によりいかなる問題が発生しても一切責任をおいません。
本手順を利用の際は全て自己責任にてお願いします。

## ■ 前提条件

AWSアカウント開設済み

## ■Lightsailの仕様

インスタンスの AWS リージョンとアベイラビリティーゾーン：Tokyo, Zone A (ap-northeast-1a)
プラットフォーム:Linux
ブループリント:Drupal
インスタンスプラン:nano
インスタンス名：drupal-demo-01
静的IP名：StaticIP-drupal-demo-01

## ■ 構築手順

### (1) AWSマネジメントコンソール へのログイン

今回はRootアカウントでログインします。

### (2) 東京リージョンを選択後、CloudShellのアイコンをクリックしてCloudShellを起動

該当リーションを「東京」へ変更後、`[>?]` の形のアイコンをクリックしてCloudShellを起動します。

- 東京リージョン選択後、CloudShellアイコンクリック（赤枠）
![(1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/74171/cc3b9efe-9b8e-2d95-a33c-b5f46207a2d3.png)

- CloudShell起動
![(2).PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/74171/a060ee61-212b-9c3c-02cd-e4ab4060ceb7.png)

### (3) aws lightsail create-instancesコマンドを実行してLightsailインスタンスを起動

CloudShell上で以下のコマンドを貼り付けます

```ruby:実行コマンド
aws lightsail create-instances --region ap-northeast1 --instance-names drupal-demo-01 --availability-zone ap-northeast-1a --blueprint-id drupal --bundle-id nano_2_0
```

コマンド実行後、以下のような出力結果となっていることを確認します。
![(3).PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/74171/9f780927-4c09-1d60-8c68-9f59652671cf.png)

### (4) aws lightsail allocate-static-ipコマンドを実行して静的IPを割り当て。

CloudShell上で以下のコマンドを貼り付けます

```ruby:実行コマンド
aws lightsail allocate-static-ip --static-ip-name StaticIP-drupal-demo-01 --region ap-northeast-1
```

コマンド実行後、以下のような出力結果となっていることを確認します。

![(4).PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/74171/badbc08b-25de-4f7d-c1f6-4aa8e28f12de.png)

### (5) awsaws lightsail attach-static-ipコマンドを実行してLightsail インスタンスに静的 IP アドレスをアタッチ

CloudShell上で以下のコマンドを貼り付けます

```ruby:実行コマンド
aws lightsail attach-static-ip --static-ip-name StaticIP-drupal-demo-01 --instance-name drupal-demo-01  --region ap-northeast-1
```

コマンド実行後、以下のような出力結果となっていることを確認します。

![(5).PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/74171/4946dccd-d129-f4e5-5f94-1e1450c086e2.png)

### (6) awsaws lightsail get-instances コマンドを実行して、静的IPが Lightsailインスタンスに正しく関連付けられているかどうかを確認

CloudShell上で以下のコマンドを貼り付けます

```ruby:実行コマンド
aws lightsail get-instances --region ap-northeast-1 --query 'instances[].{name:name,createdAt:createdAt,blueprintId:blueprintId,blueprintName:blueprintName,publicIpAddress:publicIpAddress,InstanceID:supportCode}' --output table

```

コマンド実行後、以下のような出力結果となっていることを確認の上、drupal-demo-01 の【publicIPAddress】の値を控えます。

![(6).PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/74171/98b2b97f-c3d5-95d9-cea3-a5a4c74e6928.png)

### (7) Lightsail ホームページよりLightsail確認


AWSマネジメントコンソールより[Lightsail ホームページ](https://lightsail.aws.amazon.com/ls/)にアクセスしてdrupal-demo-01インスタンスが存在することを確認します。

![(7).PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/74171/2108e12e-dc35-de21-8bc8-004474cd6d3e.png)

### (8) Lightsail ホームページよりDrupal確認

ブラウザ上よりhttp://[publicIPaddressの値]でアクセスしてDrupalの画面が表示されているか確認します。

![(8).PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/74171/90cb5fb0-afe4-b9ea-9a60-c8779478d712.png)

Drupalのログインパスワードは

[Amazon Lightsail でDrupal インスタンスを起動する](https://aws.amazon.com/jp/getting-started/hands-on/build-drupal-website/)


の「3.SSH 経由でインスタンスに接続し、Drupal ウェブサイトのパスワードを取得します」の手順で取得してください。