Opsgenie CloudFormation リソース
Opsgenie CloudFormation リソース
AWS CloudFormation では、拡張可能なコードとしてのインフラストラクチャ (IaC) 機能を提供します。これによって、開発者や企業は、関連する AWS リソースとサードパーティのリソースのコレクションを簡単に作成して、整然とした予測可能な方法でプロビジョニングして管理できます。
Atlassian Opsgenie では、これらの機能を使用して独自のカスタム リソース タイプを作成しました。
1
2
3
Atlassian::Opsgenie::User
Atlassian::Opsgenie::Team
Atlassian::Opsgenie::Integration
これらのスキーマを活用すると、CloudFormation ユーザーが Opsgenie 環境と AWS 環境の設定を簡素化できます。
設定の最新バージョンは us-west-2 と eu-central-1 リージョンでのみ利用可能です。
Opsgenie カスタム リソースの定義
Opsgenie カスタム リソース タイプを使用してリソースを作成するには、次が必要です。
CloudFormation スタック オペレーションを実行するための AWS アカウント。
リソースを作成するための Opsgenie アカウント。
スタックで CRUD オペレーションを実行するための AWS CloudFormation CLI (オプション)。
認証情報は、AWS CLIまたは AWS コンソールいずれかで設定する必要があります。リソース モデル内では設定できません。
例
CloudFormation CLI
1
2
3
4
5
6
aws cloudformation set-type-configuration \
--region $REGION \
--type RESOURCE \
--type-name $RESOURCE_NAME \
--configuration-alias default \
--configuration { "OpsgenieCredentials": { "OpsgenieApiEndpoint": "$API_ENDPOINT", "OpsgenieApiKey": "$API_KEY" }}
AWS コンソール
AWS コンソールで関連する CloudFormation リソースをアクティブ化する間、またはアクティブ化した後に構成を渡します。
1
2
3
4
5
6
{
"OpsgenieCredentials": {
"OpsgenieApiEndpoint": <API_ENDPOINT>,
"OpsgenieApiKey": "<API_KEY>"
}
}
Opsgenie リソース タイプを有効にするには、次の 2 つの方法があります。
AWS アカウントで AWS サードパーティ レジストリの Opsgenie サードパーティ リソースを有効にすると、リソース タイプを使用できます。詳細については、このリンクをご参照ください。
これらのリソースはプライベート レジストリに公開できます。詳細については、「Opsgenie のオープン ソース Github リポジトリ」をご確認ください。
Opsgenie カスタム リソースとは何ですか?
ユーザー
Atlassian::Opsgenie::User
このリソース タイプでは、Amazon CloudFormation レジストリ コンソールまたは CLI を使用して Opsgenie でユーザー エンティティ/リソースを作成できます。ユーザー リソースは、必要な Endpoint プロパティと ApiKey プロパティと併せて、簡素化を目的として 3 つの設定可能なプロパティ (Opsgenie API ドキュメントに記載されているプロパティ中の 1 つ) をサポートしています。
プロパティ | 説明 | 必須 | limit |
---|---|---|---|
ユーザ名 | ユーザーのメール アドレス | 必須 | 100 文字 |
氏名 | ユーザーの名前 | 必須 | 512 文字 |
役割 | ユーザーのロール | 必須 | 次のいずれかに限定されます。
|
エクスポートされるプロパティ
リソースが作成されると、次のプロパティが生成されます。
プロパティ | 説明 |
---|---|
ID | ユーザーエンティティを参照するために使用されるユーザーの一意の ID |
例:
Opsgenie ユーザー リソース stack.json の例をご参照ください。
スタック作成時に設定できる参照パラメーターとして OpsgenieApiKey を渡せる点にご注意ください。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
{
"AWSTemplateFormatVersion": "2010-09-09",
"Description": "OG user",
"Resources": {
"TestUser": {
"Type": "Atlassian::Opsgenie::User",
"Properties": {
"Username": "test-user@opsgenie.com",
"FullName": "test user",
"Role": "User"
}
}
}
}
チーム
Atlassian::Opsgenie::Team
このリソース タイプを使用すると、Amazon CloudFormation レジストリと CLI を使用して Opsgenie でチーム リソース/エンティティを作成できます。また、既存の Opsgenie ユーザーであるチーム メンバーを追加できます。チーム リソースは、チーム API の「チームの作成」セクションにあるように、Opsgenie のチーム エンティティで使用可能なすべてのフィールドをサポートしています。
サポートされているプロパティ
プロパティ | 説明 | 必須 | limit |
---|---|---|---|
名前 | チームの名前 | 必須 | 100 文字 |
説明 | チームの説明 | 任意 | 10,000 文字 |
members | Opsgenie ユーザーのリストをチーム エンティティに追加する | 任意 | 詳細については、以下のメンバー プロパティの表をご参照ください。 |
メンバー プロパティ:
Opsgenie のチーム リソースの Members プロパティで設定可能なプロパティを次に示します。詳細は「Opsgenie におけるチームとは」をご確認ください。
プロパティ | 説明 | 必須 | limit |
---|---|---|---|
userid | ユーザー識別子 | 必須 |
|
役割 | ユーザーのロール | 必須 | 次のいずれかに限定されます。
|
例:
Opsgenie チーム リソース stack.json ファイルの例をご参照ください。
スタック作成時に設定できる参照パラメーターとして OpsgenieApiKey と OpsgenieApiEndpoint を渡せる点にご注意ください。
また、UserID が既に存在していることを確認してください。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
{
"AWSTemplateFormatVersion": "2010-09-09",
"Description": "Opsgenie Test Users",
"Resources": {
"TeamA": {
"Type": "Atlassian::Opsgenie::Team",
"Properties": {
"Name": "uuuii-test-team-ops",
"Description": "Test team with 2 user for demonstration",
"Members": [
{
"UserId": "04461d66-6ec6-4632-9904-f5429aec9535",
"Role": "user"
}
]
}
}
}
}
連携
Atlassian::Opsgenie::Integration
このリソース タイプでは、統合オーナーとして Opsgenie チームに関連付けられる Opsgenie インテグレーションを作成できます。このリソースによって、Opsgenie のインシデント管理機能をテクノロジー スタックで使用されているサードパーティ ツールで使用できるようになります。Opsgenie インテグレーションの詳細についてご確認ください。
Opsgenie の統合のリソース プロパティは、統合 APIに詳細が記載されている Opsgenie の統合エンティティ パラメーターを反映しています。
サポートされているプロパティは次のとおりです。
プロパティ | 説明 | 必須 | limit |
---|---|---|---|
有効 | このパラメーターは、インテグレーションを有効にするかどうかを指定するためのものです。既定で true に設定されます。 | 必須 | デフォルト値が true のブール値。 |
名前 | インテグレーションの名前 | 必須 | 名前は、インテグレーションごとに一意である必要があります。 |
統合タイプ | 作成される API インテグレーション サポート ツール。Opsgenie の統合ページにある統合の一覧 | 必須 | API 統合のみを作成できます。サポートされる統合を確認するには、Opsgenie コンソールに表示される統合のリストを API でフィルターしてください。 |
OwnerTeamId | インテグレーションに関連付けられているチームの識別子 | 必須 |
|
OwnerTeamName | インテグレーションに関連付けられているチームの名前 | 任意 |
|
AllowReadAccess | このパラメーターは、統合の読み取りアクセスを設定するためのものです。読み取りアクセスが制限されている場合、統合はどのドメイン内でも読み取りを許可されません。 | 任意 | ブール値は既定でtrueに設定されます。 |
AllowWriteAccess | このパラメーターは、統合の書き込みアクセスを設定するためのものです。書き込みアクセスが制限されている場合、統合はどのドメイン内にも書き込みを許可されません。 | 任意 | ブール値は既定でtrueに設定されます。 |
AllowDeleteAccess | このパラメーターは、統合の削除アクセスを設定するためのものです。削除アクセスが制限されている場合、統合はどのドメイン内でも削除を許可されません。 | 任意 | デフォルト値が true のブール値。 |
AllowConfigurationAccess | このパラメーターは、設定アクセスを許可または制限するためのものです。設定アクセスが制限されている場合、インテグレーションはアラート API リクエスト、インシデント API リクエスト、およびハートビートの送信に制限されます。 | 任意 | デフォルト値が true のブール値。 |
対応者 | アラートの通知を受信するユーザーを計算するためのオプションのユーザー、スケジュール、チーム、またはエスカレーションの名前。制限を超えている対応者は無視されます。 以下の対応者プロパティの表をご参照ください。 | 任意 |
|
対応者プロパティ:
次のプロパティは、Opsgenie の統合リソースの Responder プロパティで設定できます。
プロパティ | 説明 | 必須 | limit |
---|---|---|---|
タイプ | インテグレーションのアラートに関連付けられている対応者エンティティ。 | 必須 | 次のいずれかに限定されます。
|
名前 | インテグレーションによって生成されたアラートの対応者となるスケジュールまたはチームの名前 | 必須 |
|
ユーザ名 | インテグレーションによって生成されたアラートの対応者となるユーザーの名前 | 必須 |
|
エクスポートされるプロパティ
リソースの作成後に生成されます。
プロパティ | 説明 |
---|---|
ID | 作成されたインテグレーションの一意の識別子 |
IntegrationApiKey | 自動生成されるインテグレーションの API キー |
例:
Opsgenie インテグレーション リソース stack.json ファイルの例をご参照ください。
スタック作成時に設定できる参照パラメーターとして OpsgenieApiKey と OpsgenieApiEndpoint を渡せる点にご注意ください。
また、対応者のリストに追加する前に、名前/ユーザー名がすでに存在していることを確認してください。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
{
"AWSTemplateFormatVersion": "2010-09-09",
"Description": "Opsgenie Integration",
"Resources": {
"IntegrationTest": {
"Type": "Atlassian::Opsgenie::Integration",
"Properties": {
"IntegrationType": "Marid",
"Name": "test maridint",
"Enabled":true
}
}
}
}
独自の Opsgenie リソースを作成する
次を作成してみましょう。
Atlassian::Opsgenie::Userリソース タイプ スキーマを使用している 2 人のユーザー。
Atlassian::Opsgenie::Team をそれらのユーザーと共に使用しているチーム。
SNS トピックとサブスクリプションの Atlassian::Opsgenie::Integration を使用している Opsgenie SNS 統合。
リソース .json ファイルは以下のようになります。
stack.json を作成すると、AWS コンソールまたは AWS CLI を使用してスタックを作成できます。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
{
"AWSTemplateFormatVersion": "2010-09-09",
"Description": "Opsgenie Test Users",
"Resources": {
"UserA": {
"Type": "Atlassian::Opsgenie::User",
"Properties": {
"Username": "opsgenie-user1@opsgenie.com",
"FullName": "user one",
"Role": "User"
}
},
"UserB": {
"Type": "Atlassian::Opsgenie::User",
"Properties": {
"Username": "opsgenie-user2@opsgenie.com",
"FullName": "user two",
"Role": "User"
}
},
"TeamA": {
"Type": "Atlassian::Opsgenie::Team",
"Properties": {
"Name": "uuu-test-team-ops",
"Description": "Test team with 2 user for demonstration",
"Members": [
{
"UserId": {
"Ref": "UserA"
},
"Role": "user"
},
{
"UserId": {
"Ref": "UserB"
},
"Role": "user"
}
]
},
"DependsOn": [
"UserA",
"UserB"
]
},
"IntegrationTest": {
"Type": "Atlassian::Opsgenie::Integration",
"Properties": {
"IntegrationType": "AmazonSns",
"Name": "test awsSns",
"Responders": [
{
"type": "team",
"name": {
"Fn::GetAtt": [
"TeamA",
"Name"
]
}
}
],
"Enabled": true
},
"DependsOn": [
"TeamA"
]
},
"MySns": {
"Type": "AWS::SNS::Topic",
"Properties": {
"DisplayName": "opsgenie-test-aws",
"Subscription": [
{
"Endpoint": {
"Fn::Join": [
"",
[
{
"Ref": "OpsgenieApiEndpoint"
},
"/v1/json/amazonsns?apiKey=",
{
"Fn::GetAtt": [
"IntegrationTest",
"IntegrationApiKey"
]
}
]
]
},
"Protocol": "https"
}
],
"TopicName": "opsgenie-test-demo"
},
"DependsOn": [
"IntegrationTest"
]
}
}
}
この内容はお役に立ちましたか?