Cloudflare Zero Trustを通過してRedmineのチケットを起票してみる
/ 2 min read
Table of Contents
はじめに
Cloudflare Zero TrustのApplicationで運用しているRedmineに対して、Pythonから チケット起票をする方法です。
方法
Cloudflare Zero Trust設定
- Access > Service AuthでService Tokenを作成
- Access > Applicationsで作成したApplicationにポリシーを設定する
- Policy name: 任意
- Action: Service Auth
- Include
- Selector: Service Token
- Value: 1.で作成したService Token
- Include
Redmineにチケット起票するPythonコード
import jsonimport requests
url = "https://your-redmine-url/issues.json"headers = { "Content-Type": "application/json", "X-Redmine-API-Key": "Redmineで発行したAPI Key", "CF-Access-Client-Id": "Cloudflare Zero Trustで発行したCF-Access-Client-Id", "CF-Access-Client-Secret": "Cloudflare Zero Trustで発行したCF-Access-Client-Secret",}
# セッションを使用してリクエストを行うdef post_ticket( project_id, subject, status_id, tracker_id, start_date, due_date, description, assigned_to_id,): # API詳細: https://www.redmine.org/projects/redmine/wiki/Rest_Issues payload = { "issue": { "project_id": project_id, # プロジェクトID "subject": subject, # チケットの件名 "status_id": status_id, # ステータスID "tracker_id": tracker_id, # トラッカーID "start_date": start_date, # 開始日 "due_date": due_date, # 期日 "description": description, # 詳細 "assigned_to_id": assigned_to_id, # 担当者ID } }
r = requests.post(url, headers=headers, data=json.dumps(payload)) if r.status_code == 201: return str(r.status_code) + ": チケットを作成しました" else: return str(r.status_code) + ": チケット作成に失敗しました"