0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Jira自動起票】第2回:AWS と Jira の事前準備:Secrets Manager / IAM / SNS / Jira API トークン

0
Posted at

第1回(前回まで)

この記事では、LambdaからJira REST APIを安全に呼び出すための準備作業をまとめます。

この記事で書くこと(第2回)

  • Jira CloudでAPI Tokenを発行する方法
  • Secrets ManagerにJira認証情報を登録する
  • IAMロールに必要な最小権限
  • SNSトピックを作成し、後でCloudWatch / Step Functionsから通知する準備
  • Lambdaの実行環境がどう Secrets / SNSと連携するかを理解する

1. 今回のゴール

以下、事前準備ができれば次の第3回でLambdaの最小実装 → 起票成功までできます。

準備項目 内容
1. Jira API Token 発行 Lambda から Jira を呼び出すため
2. Secrets Manager のセットアップ Jira 認証情報を安全に保管
3. Lambda ロール(IAM)の作成 SecretsManager:GetSecretValue を許可
4. SNS Topic の作成 CloudWatch/StepFunctions が通知

2.Jira Cloud : API Tokenの発行

LambdaからJiraにHTTP APIを叩くには、API Token + Basic認証を利用する

手順

  1. Jira Cloudにログイン後、アイコンからアカウント設定
    image.png

  2. セキュリティからAPI トークンの作成と管理
    image.png

3.トークン作成から任意の名前を入力、表示されたトークンをコピー(再表示できないため注意)
image.png
image.png

これをLambdaのdeploy packegeに含めるのはNG
API TokenをLambda環境変数に入れるのも推奨されない。
漏洩リスクからSecrets Managerを利用する。

3. Secrets Managerのセットアップ

登録するJSON(テンプレ)
AWS Secrets Manager → 「新しいシークレットを作成」 → シークレットタイプキー/ バリューを登録

image.png

:bulb: ポイント

キー名 説明
JIRA_BASE_URL 企業ごとの Jira ドメイン
JIRA_EMAIL API Token に紐付くユーザ
JIRA_API_TOKEN ↑で発行した Token
JIRA_PROJECT_KEY チケットの作成先プロジェクト
JIRA_ISSUE_TYPE "Incident" / "Task" など

シークレット名の命名例

jira/poc
jira/dev
jira/prod

今回はjira/devとしている

  1. IAM:Lambda実行ロールの作成
    LambdaがSecrets Managerを読むための最小限のIAM権限を付与
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "secretsmanager:GetSecretValue"
      ],
      "Resource": "arn:aws:secretsmanager:ap-northeast-1:<ACCOUNT_ID>:secret:jira/*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "logs:CreateLogGroup",
        "logs:CreateLogStream",
        "logs:PutLogEvents"
      ],
      "Resource": "*"
    }
  ]
}

:bulb: ポイント

  • Secrets ManagerのARNは必要に応じて厳格化
  • LambdaからJiraへは外部アクセスなので別途VPCルールなどは不要
    (デフォルト設定でインターネットに出られる)

5.SNS Topicの作成

トリガーとなるAWSリソースがエラーを発報した際にSNS Topicへ通知を送る
用のトピックを作成
image.png

6. curlでJira APIが動作することを確認

Lambdaを作る前に、APIが正常に動くかをローカルで先に確認

1. 環境変数のセット

# ➀ Jira サイト(ドメインのみ。https:// は付けない)
export JIRA_BASE_URL="XXXXX.atlassian.net"

# ➁ Atlassian アカウント(Jira にログインするときのメール)
export JIRA_EMAIL="<登録時のメールアドレス>"

# ➂ https://id.atlassian.com/manage-profile/security/api-tokens
#    で発行した API トークン(Git等に絶対上げない)
export JIRA_API_TOKEN="(作ったAPIトークン)"

2. 疎通確認

# ➀ 認証付きで serverInfo を叩く
curl -s --http1.1 \
  -u "$JIRA_EMAIL:$JIRA_API_TOKEN" \
  "https://$JIRA_BASE_URL/rest/api/3/serverInfo" \
  | jq -r '.baseUrl'

→ サイトドメインが出力されること

# ➁ 課題作成(Issue 作成)の キーだけ 抜き出す
curl -s --http1.1 \
  -u "$JIRA_EMAIL:$JIRA_API_TOKEN" \
  -H "Content-Type: application/json" \
  "https://$JIRA_BASE_URL/rest/api/3/issue" \
  -d '{
    "fields": {
      "project": {"key": "OPS"},
      "summary": "Test from curl",
      "issuetype": {"name": "Incident"}
    }
  }' | jq -r '.key'

→ キーが返ってくること

➤参考(Curl結果 + Jira画面)
image.png

うまくいくとチケットが作成されている。
image.png

7. まとめ

この記事では、Lambda 実装に入る前の環境準備を整えました。

完了したこと 理由
✔ Jira API Token 発行 Jira REST API を叩くため
✔ Secrets Manager 登録 API Token を安全に保持
✔ IAM ロール作成 Lambda が Secrets を取るため
✔ SNS Topic 作成 CloudWatch & StepFn 通知の受け口

次回(第3回):最小のLambdaでJira起票成功まで

  • urllib3を使ったHTTPリクエスト基礎
  • Secrets Managerの読み取り
  • 最小のJira Issue Create Lambda
  • Test Eventで実際に起票してみる
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?