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) + ": チケット作成に失敗しました"