Cloud Toolkit Mavenプラグインを使用してEDASにアプリケーションをデプロイ

この記事では、Cloud Toolkit Mavenプラグインを使用して**Alibaba Cloud EDAS**にアプリケーションをデプロイする方法を紹介します。

*本ブログは英語版からの翻訳です。オリジナルは[こちら](https://www.alibabacloud.com/blog/deploying-applications-to-edas-with-cloud-toolkit-maven-plug-in_594983)からご確認いただけます。一部機械翻訳を使用しております。翻訳の間違いがありましたら、ご指摘いただけると幸いです。*

EDAS開発者の場合、アプリケーションのデプロイにWARまたはJARパッケージを使用している場合は、Cloud Toolkit Mavenプラグインを使用して、アプリケーションをAlibaba Cloud EDASにデプロイすることができます。

#ステップ1: Maven依存関係を追加
プロジェクトの pom.xml ファイルに、以下の`<build>`依存関係を追加します。

```
<build>
 <plugins>
     <plugin>
         <groupId>com.alibaba.cloud</groupId>
         <artifactId>toolkit-maven-plugin</artifactId>
         <version>1.0.0</version>
     </plugin>
 </plugins>
</build>
```

Mavenの公式セントラルリポジトリから[最新バージョンを更新します。](https://search.maven.org/search?spm=a2c65.11461447.0.0.42466f51X6M4KV&q=g:com.alibaba.cloud%20AND%20a:toolkit-maven-plugin)

#ステップ2：Yamlファイルを設定
プロジェクトのルートディレクトリの下にedas_config.yamlファイルを作成します。パッケージ化されたプロジェクトがMavenサブモジュールの場合は、サブモジュールディレクトリにファイルを作成します。ファイルには以下の内容が含まれています。

```
env:
  region_id: cn-beijing
app:
  app_id: eb20dc8a-0000-567-1234-5f6a54550453
```

前述の設定項目のうち、region_idはアプリケーションインスタンスのリージョンID、app_idはアプリケーションIDを示します。前述の設定項目の値は一例です。実際のアプリケーションの値に置き換えてください。その他の設定項目については、「その他の設定項目」を参照してください。

#ステップ3：EDASアカウントと連携
アカウントファイルを作成し、アクセスキーIDとアクセスキーシークレットをyaml形式で設定します。Access Key IDとAccess Key Secretを表示するには、Alibaba Cloudのユーザー情報管理システムにログオンします。以下に設定例を示します。

```
access_key_id: 123456
access_key_secret: 7891011
```

#ステップ4: 配置の完了
ルートディレクトリ（複数のMavenモジュールを使用している場合はサブモジュールディレクトリ）に移動し、このパッケージングコマンドを実行します。


```
mvn package toolkit:deploy --proudct=edas -Daccess_key_file= {Account file path}
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/4dac631a-9d7b-3ac6-b4c1-48a7158aa214.png)


本コマンドを実行すると、以下のメッセージが表示され、EDASにアプリケーションが正常にデプロイされたことを示します。

#その他の設定項目
アプリケーションを展開するための設定項目は、以下のように分類されます。

- 基本環境(env)
- アプリケーション構成（アプリ）
- ストレージ構成(OSS)
現在サポートされている設定項目を以下の表に示します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/67e07fb7-8eca-6cf4-3170-9040d624b0ff.png)

#設定例1：グループと配置パッケージのバージョンを指定
例えば、ID が eb20dc8a-e6ee-4f6d-a36f-5f6a54550453 のアプリケーションが北京にデプロイされています。グループ ID は 06923bb9-8c5f-4508-94d8-517b692f30b9 で、デプロイメント パッケージのバージョンは 1.2 です。この場合の設定は以下のようになります。

```
env:
  region_id: cn-beijing
app:
  app_id: eb20dc8a-e6ee-4f6d-a36f-5f6a54550453
  package_version: 1.2
  group_id: 06923bb9-8c5f-4508-94d8-517b692f30b9
```

#設定例2：OSSストレージスペースの指定
例えば、ID が eb20dc8a-e6ee-4f6d-a36f-5f6a54550453 のアプリケーションをデプロイし、デプロイパッケージを北京の release-pkg という名前の自分のバケットにアップロードしたいとします。ファイルオブジェクト名はmy.war、OSSアカウントIDはABC、OSSアカウントキーは1234567890です。この場合の設定は以下のようになります。

```
env:
  region_id: cn-beijing
app:
  app_id: eb20dc8a-e6ee-4f6d-a36f-5f6a54550453
oss:
  region_id: cn-beijing
  bucket: release-pkg
  key: my.war  
  access_key_id: ABC
  access_key_secret: 1234567890
```

###設定ファイルの指定
- 設定ファイルが指定されていない場合、このプラグインはパッケージプロジェクトのルートディレクトリにある`.edas_config.yaml`ファイルを設定ファイルとして使用します。パッケージ化されたプロジェクトがMavenプロジェクトのサブモジュールである場合、設定ファイルはデフォルトでサブモジュールのルートディレクトリの下にありますが、Mavenプロジェクト全体のルートディレクトリの下にはありません。
- また、`-Dedas_config=xxx`パラメータを設定することで設定ファイルを指定することもできます。
- 別の設定ファイルが指定されている間にデフォルトの設定ファイルが存在する場合、プラグインは後者の設定ファイルを使用します。

###アカウント設定と優先順位の説明
このプラグインを使用してアプリケーションをデプロイする際には、アプリケーションデプロイ用のAlibaba Cloud Access Keyを提供する必要があります。現在、プラグインは複数の構成方法をサポートしています。構成方法が重複している場合は、優先度の高い構成方法が優先度の低い構成方法よりも優先されます。優先度の高い順に構成方法を示します。

- コマンドラインで指定したAK/SKパラメータ。access_key_idとaccess_key_secretは、以下のいずれかの方法で指定できます。
- Mavenコマンドを実行してプロジェクトをパッケージ化する場合は、`-Daccess_key_id=xx -Daccess_key_secret=xx`で両方のパラメータを指定します。
- pomファイルでこのプラグインを設定する場合は、以下のようにAKとSKのパラメータを設定します。

```
<plugin>
  <groupId>com.aliyun</groupId>
  <artifactId>edas-maven-plugin</artifactId>
  <version>2.30.0</version>
  <configuration>
      <accessKeyId>abc</accessKeyId>
      <accessKeySecret>1234567890</accessKeySecret>
  </configuration>
</plugin>
```

- コマンドラインでアカウントファイルを指定します(推奨)。Mavenコマンドを実行してプロジェクトをパッケージ化する場合、-Daccess_key_file={アカウントファイルのパス}でアカウントファイルをyaml形式で指定します。例: `Daccess_key_file={account file path=

```
access_key_id: abc
access_key_secret: 1234567890
```

- デフォルトのAlibaba Cloudアカウントファイルを使用します。前述の方法のいずれかでアカウントを指定しないことを選択した場合、プラグインは構成されたAlibaba Cloudアカウントを使用してアプリケーションをデプロイします。
- aliyuncli: 最新の`aliyuncli`ツールを使用してAlibaba Cloudアカウントを設定した場合、Alibaba Cloudは現在のホームディレクトリの下に`.aliyuncli`サブディレクトリを生成し、アカウント情報を保存するために`.aliyuncli`サブディレクトリに資格情報ファイルを作成します。ここでは、Macシステムを例に、システムユーザを "jack "と仮定して、`/Users/jack/.aliyuncli/credentials`ファイルに以下の情報を格納します。

```
[default]
aliyun_access_key_secret = 1234567890
aliyun_access_key_id = abc
```

プラグインは、このアカウントファイルをアプリケーションをデプロイするためのアカウントとして使用します。

- aliyun: レガシーのAliyunツールを使用してAlibaba Cloudのアカウントを設定した場合、Aliyunツールはカレントホームディレクトリの下に.aliyunサブディレクトリを生成し、その`.aliyun`サブディレクトリに`config.json`ファイルを作成します。ここではMacシステムを例に挙げ、システムユーザーを「jack」と仮定しているので、アカウント情報は`/Users/jack/.aliyun/config.json`に格納されています。

```
{
  "current": "",
  "profiles": [{
      "name": "default",
      "mode": "AK",
      "access_key_id": "",
      "access_key_secret": "",
      "sts_token": "",
      "ram_role_name": "",
      "ram_role_arn": "",
      "ram_session_name": "",
      "private_key": "",
      "key_pair_name": "",
      "expired_seconds": 0,
      "verified": "",
      "region_id": "",
      "output_format": "json",
      "language": "en",
      "site": "",
      "retry_timeout": 0,
      "retry_count": 0
  }, {
      "name": "",
      "mode": "AK",
      "access_key_id": "abc",
      "access_key_secret": "xxx",
      "sts_token": "",
      "ram_role_name": "",
      "ram_role_arn": "",
      "ram_session_name": "",
      "private_key": "",
      "key_pair_name": "",
      "expired_seconds": 0,
      "verified": "",
      "region_id": "cn-hangzhou",
      "output_format": "json",
      "language": "en",
      "site": "",
      "retry_timeout": 0,
      "retry_count": 0
  }],
  "meta_path": ""
}
```

- システム環境変数：最後に、プラグインはシステム環境変数からaccess_key_idとaccess_key_secretの値を取得しようとします。つまり、プラグインはJavaコードの`System.getenv("access_key_id”)`と`System.getenv("access_key_secret”)`からこれらの値を取得します。

*アリババクラウドは日本に２つのデータセンターを有し、世界で60を超えるアベラビリティーゾーンを有するアジア太平洋地域No.1(2019ガートナー)のクラウドインフラ事業者です。
アリババクラウドの詳細は、こちらからご覧ください。
[アリババクラウドジャパン公式ページ](https://www.alibabacloud.com/ja)*