このトピックでは、Alibaba Cloud Object Storage Service (OSS) と Alibaba Cloud Simple Message Queue (旧称:MNS) を統合する方法について説明します。OSS にファイルをアップロードして、ファイルを処理して結果を生成するワークフローを自動的にトリガーできます。
前提条件
OSS イベント通知が作成されている。
ワークフロークラスターが作成されている。
Alibaba Cloud Argo コマンドラインインターフェイス (CLI) がインストールされている。
ステップ 1: イベントバスの作成
名前空間内のイベント駆動型ワークフローは、イベントバスを共有できます。すでにイベントバスを作成している場合は、このステップをスキップしてステップ 2: イベントソースの作成に進むことができます。
Simple Message Queue (旧称:MNS) を使用してイベントバスを作成する場合、Pod は作成されません。
トリガー機能を使用するには、NATS を使用して EventBus を作成する必要があります。Simple Message Queue (旧称:MNS) メソッドは、オープンソースの Argo Events Sensor Trigger をサポートしていません。
方法 1: NATS の使用
event-bus.yamlファイルを作成します。次のコードは一例です。apiVersion: argoproj.io/v1alpha1 kind: EventBus metadata: name: default spec: nats: native: replicas: 3 auth: token次のコマンドを実行して EventBus を作成します。
kubectl apply -f event-bus.yaml説明コマンドが正常に実行されると、デフォルトの名前空間にイベントバス Pod が作成されます。後続のすべての操作は、同じ名前空間で実行する必要があります。
次のコマンドを実行して、イベントバス Pod が開始されたことを確認します。
kubectl get pod
方法 2: Simple Message Queue (旧称:MNS) の使用
Simple Message Queue (旧称:MNS) コンソールにログインします。
[Topic リスト] ページで、argoeventbus という名前の Topic を作成します。[Topic 詳細] ページで、[エンドポイント] セクションからエンドポイントを取得します。
RAM ユーザーを作成し、ユーザーに
AliyunMNSFullAccess権限を付与して、ユーザーの AccessKey ID と AccessKey Secret を取得します。次のコマンドを実行して、AccessKey ID と AccessKey Secret を格納する Secret を作成します。
kubectl create secret generic mns-secret\ --from-literal=accesskey=*** \ --from-literal=secretkey=***event-bus-mns.yamlファイルを作成します。次のコードは一例です。topic: これを、ステップ 2 で作成した Simple Message Queue (旧称:MNS) Topic の名前に置き換えます。endpoint: これを、ステップ 2 で取得したエンドポイントに置き換えます。
apiVersion: argoproj.io/v1alpha1 kind: EventBus metadata: name: default spec: alimns: accessKey: key: accesskey name: mns-secret secretKey: key: secretkey name: mns-secret topic: argoeventbus # Simple Message Queue (旧称:MNS) の Topic の名前。 endpoint: http://165***368.mns.<region>.aliyuncs.com次のコマンドを実行して
event-bus-mns.yamlファイルを適用します。kubectl apply -f event-bus-mns.yaml
ステップ 2: イベントソースの作成
RAM ユーザーを作成し、ユーザーに
AliyunMNSFullAccess権限を付与して、ユーザーの AccessKey ID と AccessKey Secret を取得します。詳細については、「RAM ユーザーの作成」、「RAM ユーザーへの権限付与」、「AccessKey ペアの作成」、および「RAM ユーザーの AccessKey 情報の表示」をご参照ください。event-source.yamlファイルを作成します。次のコードは一例です。queue: これを Simple Message Queue (旧称:MNS) キューの名前に置き換えます。endpoint: これを Simple Message Queue (旧称:MNS) のエンドポイントに置き換えます。
apiVersion: argoproj.io/v1alpha1 kind: EventSource metadata: name: ali-mns spec: mns: example: jsonBody: true accessKey: key: accesskey name: mns-secret secretKey: key: secretkey name: mns-secret queue: oss-event-queue # Simple Message Queue (旧称:MNS) キューの名前。 waitTimeSeconds: 20 endpoint: http://165***368.mns.<region>.aliyuncs.com # Simple Message Queue (旧称:MNS) のエンドポイント。次のコマンドを実行してイベントソースを作成します。
kubectl apply -f event-source.yaml次のコマンドを実行して、イベントソース Pod が開始されたことを確認します。
kubectl get pod
ステップ 3: イベントセンサーの作成
event-sensor.yamlファイルを作成し、ワークフロー定義をイベントセンサーに埋め込みます。次のコードは一例です。次のコマンドを実行してイベントセンサーを作成します。
kubectl apply -f event-sensor.yaml次のコマンドを実行して、イベントセンサー Pod が開始されたことを確認します。
kubectl get pod
Simple Message Queue (旧称:MNS) を使用して EventBus を作成すると、イベントセンサーの作成後に、対応する Simple Message Queue (旧称:MNS) キューが自動的に作成されます。キューの名前は、ackone-argowf-<namespace>-<sensor-name>-<sensor-uid> というフォーマットになります。
ステップ 4: OSS へのファイルのアップロードによるワークフローのトリガーの確認
OSS コンソールにログインします。
ワークフローをトリガーするには、次の 2 つのファイルを OSS バケットにアップロードします。これらのファイルは事前に準備しておく必要があります。
datafile: カスタムコンテンツを含むテキスト形式のデータファイル。
datafile.complete: トリガーファイル。これは空のファイルでかまいません。
ワークフロークラスターで次のコマンドを実行して、ワークフローのステータスを表示します。
argo list予想される出力は次のとおりです。
NAME STATUS AGE DURATION PRIORITY process-oss-file-kmb4k Running 13s 13s 0次のコマンドを実行して、ワークフローのログを取得します。
argo logs process-oss-file-kmb4k重要コマンド内のワークフロー名は、前のステップで返された名前と一致する必要があります。名前
ali-mns-workflow-5prz7は一例です。お使いの環境の実際の名前で置き換えてください。メッセージの内容は Base64 でエンコードされています。
予想される出力は次のとおりです。

ステップ 5: イベント関連リソースのクリーンアップ
次のコマンドを実行して、イベント関連のリソースをクリーンアップします。
kubectl delete sensor process-oss-file kubectl delete eventsource ali-mns kubectl delete eventbus default次のコマンドを実行して Pod を表示し、すべてのリソースが削除されたことを確認します。
kubectl get pod