Azure Spring Cloud とは
Spring Cloud Azure は、Spring アプリケーションでの Azure サービスの使用を容易にするのに役立つオープンソース プロジェクトです。
Spring Cloud Azure はオープンソース プロジェクトであり、すべてのリソースが一般に公開されています。 次の一覧に、これらのリソースへのリンクを示します。
- ソース コード: Azure/azure-sdk-for-java。
- サンプル: Azure-Samples/azure-spring-boot-samples。
- ドキュメント: Spring Cloud Azure。
Spring Cloud Azure の用途
Spring Cloud Azure により、Spring アプリケーションで次のタスクを実行するのが簡単になります。
- Azure App Configuration による構成プロパティの管理。
- Azure Event Hubs、Azure Service Bus、および Azure Storage Queue を使用したメッセージの送受信。
- Azure Key Vault によるシークレットとキーの管理。
- Microsoft Entra ID でプロビジョニングされた職場または学校アカウントでのユーザー サインインのサポート。
- Azure Active Directory B2C による Facebook や Google などのソーシャル アカウントでのユーザー サインインのサポート。
- Microsoft Entra ID と Azure Active Directory B2C を使用して、Microsoft Graph などの Web APIを保護し、保護された API にアクセスしてユーザーおよび組織のデータを操作。
- Azure Cosmos DB を使用した構造化データの格納。
- Azure Blob Storage を使用したテキストやバイナリ データなどの非構造化データの格納。
- Azure Files を使用したファイルの格納。
Spring Cloud Azure を使用する利点
次のセクションでは、Spring Cloud Azure を使用する利点を示します。 このセクションでは、Azure Key Vault に格納されているシークレットの取得を例として使用します。 このセクションでは、Spring Cloud Azure を使用する場合と使用しない場合の、Spring Boot アプリケーションの開発の違いを比較します。
Spring Cloud Azure なし
Spring Cloud Azure を使用しない場合、Azure Key Vault に格納されているシークレットを取得するには、次の手順を実行する必要があります。
pom.xml ファイルに次の依存関係を追加します。
<dependency> <groupId>com.azure</groupId> <artifactId>azure-security-keyvault-secrets</artifactId> <version>4.5.2</version> </dependency>
次の例のようなコードを使用して、
SecretClient
クラス インスタンスを構築します。public class DemoClass { public static void main(String... args) { SecretClient client = new SecretClientBuilder() .vaultUrl("vaultUrl") .credential(new ClientSecretCredentialBuilder() .tenantId("tenantId") .clientId("clientId") .clientSecret("clientSecret") .build()) .buildClient(); } }
次の例に示すように、これらのプロパティを構成可能にすることによって、
client-id
やclient-secret
などの情報のハード コーディングを避けます。@ConfigurationProperties("azure.keyvault") public class KeyVaultProperties { private String vaultUrl; private String tenantId; private String clientId; private String clientSecret; public KeyVaultProperties(String vaultUrl, String tenantId, String clientId, String clientSecret) { this.vaultUrl = vaultUrl; this.tenantId = tenantId; this.clientId = clientId; this.clientSecret = clientSecret; } public String getVaultUrl() { return vaultUrl; } public void setVaultUrl(String vaultUrl) { this.vaultUrl = vaultUrl; } public String getTenantId() { return tenantId; } public void setTenantId(String tenantId) { this.tenantId = tenantId; } public String getClientId() { return clientId; } public void setClientId(String clientId) { this.clientId = clientId; } public String getClientSecret() { return clientSecret; } public void setClientSecret(String clientSecret) { this.clientSecret = clientSecret; } }
次の例に示すように、アプリケーション コードを更新します。
@SpringBootApplication @EnableConfigurationProperties(KeyVaultProperties.class) public class SecretClientApplication implements CommandLineRunner { private KeyVaultProperties properties; public SecretClientApplication(KeyVaultProperties properties) { this.properties = properties; } public static void main(String[] args) { SpringApplication.run(SecretClientApplication.class, args); } @Override public void run(String... args) { SecretClient client = new SecretClientBuilder() .vaultUrl(properties.getVaultUrl()) .credential(new ClientSecretCredentialBuilder() .tenantId(properties.getTenantId()) .clientId(properties.getClientId()) .clientSecret(properties.getClientSecret()) .build()) .buildClient(); System.out.println("sampleProperty: " + client.getSecret("sampleProperty").getValue()); } }
次の例に示すように、必要なプロパティを application.yml ファイルに追加します。
azure: keyvault: vault-url: tenant-id: client-id: client-secret:
SecretClient
を複数の場所で使用する必要がある場合は、SecretClient
Bean を定義します。 次に、関連する場所でSecretClient
自動接続します。
Spring Cloud Azure あり
Spring Cloud Azure を使用する場合、Azure Key Vault に格納されているシークレットを取得するには、次の手順に示すように要件が簡単になります。
pom.xml ファイルに次の依存関係を追加します。
<dependencies> <dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-starter-keyvault-secrets</artifactId> </dependency> </dependencies>
次の例に示すように、部品表 (BOM) を使用して Spring Cloud Azure のバージョンを管理します。
<dependencyManagement> <dependencies> <dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-dependencies</artifactId> <version>5.17.1</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
Note
Spring Boot 2.xを使用している場合は、
spring-cloud-azure-dependencies
バージョンを4.19.0
に設定してください。 この部品表(BOM)は、 pom.xml ファイルの<dependencyManagement>
セクションで設定する必要があります。 これにより、すべてのSpring Cloud Azure依存関係が同じバージョンを使用していることが保証されます。 このBOMに使用されるバージョンの詳細については、「Spring Cloud Azureのどのバージョンを使うべきか」を参照してください。application.yml ファイルに次のプロパティを追加します。
spring: cloud: azure: keyvault: secret: endpoint:
次のコマンドを使用して、Azure CLI にサインインします。 その後、資格情報が Azure CLI によって提供されるため、
client-id
やclient-secret
などの他の資格情報を追加する必要はありません。az login
次の例に示すように、関連する場所で
SecretClient
を自動接続します。@SpringBootApplication public class SecretClientApplication implements CommandLineRunner { private final SecretClient secretClient; public SecretClientApplication(SecretClient secretClient) { this.secretClient = secretClient; } public static void main(String[] args) { SpringApplication.run(SecretClientApplication.class, args); } @Override public void run(String... args) { System.out.println("sampleProperty: " + secretClient.getSecret("sampleProperty").getValue()); } }
Spring Cloud Azure には、自動構成された SecretClient
以外にもいくつかの機能が用意されています。 例えば次の例に示すように、@Value
を使用してシークレット値を取得できます。
@SpringBootApplication
public class PropertySourceApplication implements CommandLineRunner {
@Value("${sampleProperty1}")
private String sampleProperty1;
public static void main(String[] args) {
SpringApplication.run(PropertySourceApplication.class, args);
}
public void run(String[] args) {
System.out.println("sampleProperty1: " + sampleProperty1);
}
}
Spring Cloud Azure のコンポーネント
Azure サポート
Azure サービス (Service Bus、Storage、Active Directory など) の自動構成サポートを提供します。
Microsoft Entra ID
認証用に Azure Active Directory と Spring Security の統合サポートを提供します。 詳細については、「Spring Security の Spring Cloud Azure サポート」を参照してください。
Azure Key Vault
Azure Key Vault のシークレットと統合するために、Spring @Value
アノテーション サポートを提供します。 詳細については、「Spring Cloud Azure シークレット管理」を参照してください。
Azure Storage
Azure Storage サービスの Spring Boot サポートを提供します。 詳細については、「Spring Cloud Azure リソースの処理」を参照してください。
サポートを受ける
Spring Cloud Azure のサポートが必要な場合は、次の方法でサポートを依頼できます。
- Azure サポート チケットを作成する。 Azureサポート プランをご利用のお客様は、Azureサポート チケットを開くことができます。 問題にすぐに注意する必要がある場合は、このオプションをお勧めします。
- GitHub issues を Azure/azure-sdk-for-java リポジトリに提出する。 GitHub issues を使用して、バグ、質問、機能の要求を追跡します。 GitHub issues は無料ですが、応答時間は保証されません。 詳細については、「GitHub issues のサポート プロセス」を参照してください。