リソース作成者の取得方法(Java SDK編)

◆ Live配信スケジュール ◆
サイオステクノロジーでは、Microsoft MVPの武井による「わかりみの深いシリーズ」など、定期的なLive配信を行っています。
⇒ 詳細スケジュールはこちらから
⇒ 見逃してしまった方はYoutubeチャンネルをご覧ください
【5/21開催】Azure OpenAI ServiceによるRAG実装ガイドを公開しました
生成AIを活用したユースケースで最も一番熱いと言われているRAGの実装ガイドを公開しました。そのガイドの紹介をおこなうイベントです!!
https://tech-lab.connpass.com/event/315703/

こんにちは、サイオステクノロジー技術部の武井です。今回は、前回に引き続き、リソース作成者を取得する方法をご案内します。今回はみんな大好きJavaのSDKを使ってやってみます。

前回のようにRest APIでもいいのですが、やっぱり生JSONは面倒です。SDK使ったほうが、楽チンです。Java SDKを使えば、取得したデータをオブジェクトに詰め込んでくれますし。

では、早速ですが、取得方法を説明いたします。

Java SDKはgitに上がっています。AzureのJava SDKはMaven Central Repositoryに上がっているので、インストールも楽ちんなのですが、アクティビティログを取得するSDKだけはPreviewということで、Maven Central Repositoryにないです。自分でビルドするしかなさそうです。Previewなのですが、きっちり動くようです。マイクロソフトサポートの人もおすすめしていました。なので、多分大丈夫かと思いますが、なにせPreviewなので、自己責任でお願い致しますm(_ _)m

SDKをgitから落としてきます。

$ git clone https://github.com/Azure/azure-sdk-for-java.git

アクティビティログを取得するSDKだけでなく、全てのSDKを落としてくるので、すごく時間がかかります。

次にアクティビティログを取得するSDKのあるディレクトリに移動します。

$ cd azure-sdk-for-java/azure-mgmt-monitor

ビルドします。Mavenがインストールされていることが前提です。

$ mvn clean package

targetフォルダのなかに「azure-mgmt-monitor-バージョン番号.jar」というのが出来上がります。これをクラスパスの通るところに置きます。

以下のコードを書いて実行すれば、標準出力にリソース作成者が表示されます。ただし、下記のコードは、リソースの種別がリソースグループの場合です。

public class ResourceOwner {

    private static final String client = "[前回取得したクライアントID]"; // クライアントID
    private static final String tenant = "[前回取得したディレクトリID]"; // ディレクトリID
    private static final String key = "[前回取得したキー]"; // キー
    private static final String subscriptionId = "[リソースが存在するサブスクリプション]"; // サブスクリプションID
    private static final String resourceId = "[任意のリソースのリソースID]"; // 作成者を取得したいリソースのID

    public static void main(String[] args) {
        ApplicationTokenCredentials credentials = new ApplicationTokenCredentials(client, tenant, key,
                AzureEnvironment.AZURE);

        // Azure Monitor APIへの認証を行う
        MonitorManager manager = MonitorManager.authenticate(credentials, subscriptionId);

        // 90日前のログしか取れないので、現在日付から90日前の日付を生成する
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
        Calendar cal = Calendar.getInstance();
        cal.add(Calendar.DAY_OF_MONTH, -90);
        String startTimeStamp = sdf.format(cal.getTime());

        // 作成者を取得したいリソースのIDを指定してAPIをコールする
        PagedList eventDataInners = manager.innerEx().activityLogs().list(
                "eventTimestamp ge '" + startTimeStamp + "' and resourceId eq '" + resourceId + "'",
                "caller,operationName,subStatus");

        // 取得した結果をループで回して、OperationNameとSubStatusが以下に一致するもののcallerがリソースの作成者とする
        // OperationName:Microsoft.Resources/subscriptions/resourcegroups/write
        // SubStatus:Created
        for (EventDataInner eventDataInner : eventDataInners) {
            if (eventDataInner.operationName().value().equals("Microsoft.Resources/subscriptions/resourcegroups/write")
                    && eventDataInner.subStatus().value().equals("Created")) {
                System.out.println(eventDataInner.caller());
            }
        }
    }
}

以上で終わりです。やっぱりSDKは楽ちんですね。

アバター画像
About 武井 宜行 269 Articles
Microsoft MVP for Azure🌟「最新の技術を楽しくわかりやすく」をモットーにブログtech-lab.sios.jp)で情報を発信🎤得意分野はAzureによるクラウドネイティブな開発(Javaなど)💻「世界一わかりみの深いクラウドネイティブ on Azure」の動画を配信中📹 https://t.co/OMaJYb3pRN
ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

0人がこの投稿は役に立ったと言っています。


ご覧いただきありがとうございます。
ブログの最新情報はSNSでも発信しております。
ぜひTwitterのフォロー&Facebookページにいいねをお願い致します!



>> 雑誌等の執筆依頼を受付しております。
   ご希望の方はお気軽にお問い合わせください!

Be the first to comment

Leave a Reply

Your email address will not be published.


*


質問はこちら 閉じる