diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index b4ca5b5b8..918690db3 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -17,9 +17,7 @@ jobs:
git config core.sparsecheckout true
echo "sdk/spring" >> .git/info/sparse-checkout
echo "eng" >> .git/info/sparse-checkout
- echo "sdk/keyvault" >> .git/info/sparse-checkout
echo "sdk/boms" >> .git/info/sparse-checkout
- echo "sdk/aot" >> .git/info/sparse-checkout
git pull --depth=1 origin main
mvn clean install -Dmaven.javadoc.skip=true -DskipTests \
-Dcheckstyle.skip=true \
@@ -27,7 +25,7 @@ jobs:
-Dspotbugs.skip=true \
-Drevapi.skip=true -Djacoco.skip=true \
-Dparallel-test-playback \
- -Pdev \
+ -Pnative \
-f sdk/spring/pom.xml
- uses: actions/checkout@v2
- name: Set up JDK 11
diff --git a/.github/workflows/codeql_analysis.yml b/.github/workflows/codeql_analysis.yml
index 1d50b315c..9215639ef 100644
--- a/.github/workflows/codeql_analysis.yml
+++ b/.github/workflows/codeql_analysis.yml
@@ -45,9 +45,7 @@ jobs:
git config core.sparsecheckout true
echo "sdk/spring" >> .git/info/sparse-checkout
echo "eng" >> .git/info/sparse-checkout
- echo "sdk/keyvault" >> .git/info/sparse-checkout
echo "sdk/boms" >> .git/info/sparse-checkout
- echo "sdk/aot" >> .git/info/sparse-checkout
git pull --depth=1 origin main
mvn clean install -Dmaven.javadoc.skip=true -DskipTests \
-Dcheckstyle.skip=true \
@@ -55,7 +53,7 @@ jobs:
-Dspotbugs.skip=true \
-Drevapi.skip=true -Djacoco.skip=true \
-Dparallel-test-playback \
- -Pdev \
+ -Pnative \
-f sdk/spring/pom.xml
- name: Checkout repository
uses: actions/checkout@v2
diff --git a/README.md b/README.md
index 8d96dc12b..df156fd7c 100644
--- a/README.md
+++ b/README.md
@@ -47,6 +47,7 @@ We use `main` branch as the develop branch while setting the default branch as t
| App Configuration| [azure-spring-cloud-feature-management:2.2.0] | [feature-management-sample](appconfiguration/feature-management-sample) |
| App Configuration| [azure-spring-cloud-feature-management:2.2.0] | [feature-management-web-sample](appconfiguration/feature-management-web-sample) |
| App Configuration| [azure-spring-cloud-appconfiguration-config:2.3.0] | [azure-appconfiguration-conversion-sample-complete](appconfiguration/azure-appconfiguration-conversion-sample-complete) |
+| App Configuration| [spring-cloud-azure-starter-appconfiguration:4.0.0] | [appconfiguration-client](appconfiguration/spring-cloud-azure-starter-appconfiguration/appconfiguration-client) |
| Cache | N/A | [azure-spring-cloud-sample-cache](cache/spring-cloud-azure-starter/spring-cloud-azure-sample-cache) |
| Cloud Foundry | N/A | [azure-cloud-foundry-service-sample](cloudfoundry/azure-cloud-foundry-service-sample) |
| Cosmos DB | [azure-spring-data-cosmos:3.19.0] | [cosmos-multi-database-multi-account](cosmos/azure-spring-data-cosmos/cosmos-multi-database-multi-account) |
@@ -57,6 +58,7 @@ We use `main` branch as the develop branch while setting the default branch as t
| Event Hubs | [spring-cloud-azure-starter-integration-eventhubs:4.0.0] | [eventhubs-integration](eventhubs/spring-cloud-azure-starter-integration-eventhubs/eventhubs-integration) |
| Event Hubs | [spring-cloud-azure-stream-binder-eventhubs:4.0.0] | [eventhubs-binder](eventhubs/spring-cloud-azure-stream-binder-eventhubs/eventhubs-binder) |
| Event Hubs | [spring-cloud-azure-stream-binder-eventhubs:4.0.0] | [eventhubs-multibinders](eventhubs/spring-cloud-azure-stream-binder-eventhubs/eventhubs-multibinders) |
+| Event Hubs | [spring-cloud-azure-starter-eventhubs:4.0.0] | [eventhubs-client](eventhubs/spring-cloud-azure-starter-eventhubs/eventhubs-client) |
| Key Vault | [azure-spring-boot-starter-keyvault-certificates:3.14.0] | [keyvault-certificates-client-side](keyvault/azure-spring-boot-starter-keyvault-certificates/keyvault-certificates-client-side) |
| Key Vault | [azure-spring-boot-starter-keyvault-certificates:3.14.0] | [keyvault-certificates-server-side](keyvault/azure-spring-boot-starter-keyvault-certificates/keyvault-certificates-server-side) |
| Key Vault | | [run-with-command-line-server-side](keyvault/azure-securtiy-keyvault-jca/run-with-command-line-server-side) |
@@ -73,8 +75,10 @@ We use `main` branch as the develop branch while setting the default branch as t
| Service Bus | [spring-cloud-azure-stream-binder-servicebus:4.0.0] | [servicebus-queue-binder-arm](servicebus/spring-cloud-azure-stream-binder-servicebus/servicebus-queue-binder-arm) |
| Storage | [spring-cloud-azure-starter-storage-blob:4.0.0] | [storage-blob-sample](storage/spring-cloud-azure-starter-storage-blob/storage-blob-sample)
| Storage | [spring-cloud-azure-starter-storage-file-share:4.0.0] | [storage-file-sample](storage/spring-cloud-azure-starter-storage-file-share/storage-file-sample) |
+| Storage | [spring-cloud-azure-starter-storage-queue:4.0.0] | [storage-queue-client](storage/spring-cloud-azure-starter-storage-queue/storage-queue-client) |
| Storage | [spring-cloud-azure-starter-integration-storage-queue:4.0.0] | [storage-queue-integration](storage/spring-cloud-azure-starter-integration-storage-queue/storage-queue-integration) |
| Storage | [spring-cloud-azure-starter-integration-storage-queue:4.0.0] | [storage-queue-operation](storage/spring-cloud-azure-starter-integration-storage-queue/storage-queue-operation) |
+| Spring Native | spring-cloud-azure-native-configuration:4.0.0-beta.1 | [storage-blob-native](spring-native/storage-blob-native) |
## Running Samples With Terraform
With [terraform](https://www.terraform.io/) scripts and [DefaultAzureCredential](https://microsoft.github.io/spring-cloud-azure/current/reference/html/index.html#defaultazurecredential), most samples in the project can be run with the same 4 steps below:
@@ -95,10 +99,12 @@ mvn clean spring-boot:run
It supports both Bash environment and [PowerShell](https://docs.microsoft.com/en-us/powershell/) environment.
Please refer to [README.md](servicebus/spring-cloud-azure-starter-integration-servicebus/single-namespace/README.md) under each sample for detailed information.
+### Run Samples Based On Spring Native
+Two Maven profiles have been defined in this project to support compiling Spring applications to native executables: `buildpack` and `native`. The `buildpack` profile will use [Buildpacks](https://docs.spring.io/spring-native/docs/current/reference/htmlsingle/#getting-started-buildpacks) and the `native` profile will use [Native Build Tools](https://docs.spring.io/spring-native/docs/current/reference/htmlsingle/#getting-started-native-build-tools). Please follow the [storage-blob-native sample](spring-native/storage-blob-native) for more details.
-###
[spring-cloud-azure-starter-keyvault-secrets:4.0.0]: https://search.maven.org/artifact/com.azure.spring/spring-cloud-azure-starter-keyvault-secrets/4.0.0/jar
[spring-cloud-azure-stream-binder-eventhubs:4.0.0]: https://search.maven.org/artifact/com.azure.spring/spring-cloud-azure-stream-binder-eventhubs/4.0.0/jar
+[spring-cloud-azure-starter-eventhubs:4.0.0]: https://search.maven.org/artifact/com.azure.spring/spring-cloud-azure-starter-eventhubs/4.0.0/jar
[spring-cloud-azure-starter-integration-eventhubs:4.0.0]: https://search.maven.org/artifact/com.azure.spring/spring-cloud-azure-starter-integration-eventhubs/4.0.0/jar
[spring-cloud-azure-stream-binder-servicebus:4.0.0]: https://search.maven.org/artifact/com.azure.spring/spring-cloud-azure-stream-binder-servicebus/4.0.0/jar
[spring-cloud-azure-starter-active-directory:4.0.0]: https://search.maven.org/artifact/com.azure.spring/spring-cloud-azure-starter-active-directory/4.0.0/jar
@@ -109,9 +115,11 @@ Please refer to [README.md](servicebus/spring-cloud-azure-starter-integration-se
[spring-cloud-azure-starter-integration-servicebus:4.0.0]: https://search.maven.org/artifact/com.azure.spring/spring-cloud-azure-starter-integration-servicebus/4.0.0/jar
[spring-cloud-azure-starter-integration-storage-queue:4.0.0]: https://search.maven.org/artifact/com.azure.spring/spring-cloud-azure-starter-integration-storage-queue/4.0.0/jar
[spring-cloud-azure-starter-storage-file-share:4.0.0]: https://search.maven.org/artifact/com.azure.spring/spring-cloud-azure-starter-storage-file-share/4.0.0/jar
+[spring-cloud-azure-starter-storage-queue:4.0.0]: https://search.maven.org/artifact/com.azure.spring/spring-cloud-azure-starter-storage-queue/4.0.0/jar
[spring-cloud-azure-starter-storage-blob:4.0.0]: https://search.maven.org/artifact/com.azure.spring/spring-cloud-azure-starter-storage-blob/4.0.0/jar
[spring-cloud-azure-starter-data-cosmos:4.0.0]: https://search.maven.org/artifact/com.azure.spring/spring-cloud-azure-starter-data-cosmos/4.0.0/jar
[azure-spring-cloud-feature-management:2.2.0]: https://search.maven.org/artifact/com.azure.spring/azure-spring-cloud-feature-management/2.2.0/jar
[azure-spring-cloud-appconfiguration-config:2.3.0]: https://search.maven.org/artifact/com.azure.spring/azure-spring-cloud-appconfiguration-config/2.3.0/jar
+[spring-cloud-azure-starter-appconfiguration:4.0.0]: https://search.maven.org/artifact/com.azure.spring/spring-cloud-azure-starter-appconfiguration/4.0.0/jar
[azure-spring-boot-starter-keyvault-certificates:3.14.0]: https://search.maven.org/artifact/com.azure.spring/azure-spring-boot-starter-keyvault-certificates/3.14.0/jar
[azure-spring-data-cosmos:3.19.0]: https://search.maven.org/artifact/com.azure/azure-spring-data-cosmos/3.19.0/jar
diff --git a/aad/spring-cloud-azure-starter-active-directory/aad-resource-server-by-filter-stateless/terraform/README.md b/aad/spring-cloud-azure-starter-active-directory/aad-resource-server-by-filter-stateless/terraform/README.md
index d7e6ebd03..40e0edec9 100644
--- a/aad/spring-cloud-azure-starter-active-directory/aad-resource-server-by-filter-stateless/terraform/README.md
+++ b/aad/spring-cloud-azure-starter-active-directory/aad-resource-server-by-filter-stateless/terraform/README.md
@@ -94,7 +94,7 @@ source ./terraform/setup_env.sh
#### Run with Powershell
```shell
-. terraform\setup_env.ps1
+terraform\setup_env.ps1
```
You will see output like below, save this output to use later.
diff --git a/aad/spring-cloud-azure-starter-active-directory/aad-resource-server-by-filter/terraform/README.md b/aad/spring-cloud-azure-starter-active-directory/aad-resource-server-by-filter/terraform/README.md
index 0b4cb1e4a..f9e8840b2 100644
--- a/aad/spring-cloud-azure-starter-active-directory/aad-resource-server-by-filter/terraform/README.md
+++ b/aad/spring-cloud-azure-starter-active-directory/aad-resource-server-by-filter/terraform/README.md
@@ -94,7 +94,7 @@ source ./terraform/setup_env.sh
#### Run with Powershell
```shell
-. terraform\setup_env.ps1
+terraform\setup_env.ps1
```
You will see output like below, save this output of `created user` to login.
diff --git a/aad/spring-cloud-azure-starter-active-directory/web-client-access-resource-server/aad-resource-server-obo/pom.xml b/aad/spring-cloud-azure-starter-active-directory/web-client-access-resource-server/aad-resource-server-obo/pom.xml
index cfdbc6c71..585ed4bbc 100644
--- a/aad/spring-cloud-azure-starter-active-directory/web-client-access-resource-server/aad-resource-server-obo/pom.xml
+++ b/aad/spring-cloud-azure-starter-active-directory/web-client-access-resource-server/aad-resource-server-obo/pom.xml
@@ -42,13 +42,4 @@
-
-
-
- org.springframework.boot
- spring-boot-maven-plugin
-
-
-
-
diff --git a/appconfiguration/spring-cloud-azure-starter-appconfiguration/appconfiguration-client/README.md b/appconfiguration/spring-cloud-azure-starter-appconfiguration/appconfiguration-client/README.md
new file mode 100644
index 000000000..1d775fb72
--- /dev/null
+++ b/appconfiguration/spring-cloud-azure-starter-appconfiguration/appconfiguration-client/README.md
@@ -0,0 +1,169 @@
+# Using Spring Cloud Azure App Configuration Starter
+
+This sample illustrates the simplest usage of `spring-cloud-azure-starter-appconfiguration`.
+
+## What You Will Build
+
+You will build an application that use `spring-cloud-azure-starter-appconfiguration` to retrieve configurations from [Azure App Configuration](https://azure.microsoft.com/services/app-configuration/).
+
+## What You Need
+
+- [An Azure subscription](https://azure.microsoft.com/free/)
+- [Terraform](https://www.terraform.io/)
+- [Azure CLI](https://docs.microsoft.com/cli/azure/install-azure-cli)
+- [JDK8](https://www.oracle.com/java/technologies/downloads/) or later
+- Maven
+- You can also import the code straight into your IDE:
+ - [IntelliJ IDEA](https://www.jetbrains.com/idea/download)
+
+## Provision Azure Resources Required to Run This Sample
+This sample will create Azure resources using Terraform. If you choose to run it without using Terraform to provision resources, please pay attention to:
+> [!IMPORTANT]
+> If you choose to use a security principal to authenticate and authorize with Azure Active Directory for accessing an Azure resource
+> please refer to [Authorize access with Azure AD](https://microsoft.github.io/spring-cloud-azure/current/reference/html/index.html#authorize-access-with-azure-active-directory) to make sure the security principal has been granted the sufficient permission to access the Azure resource.
+
+### Authenticate Using the Azure CLI
+Terraform must authenticate to Azure to create infrastructure.
+
+In your terminal, use the Azure CLI tool to setup your account permissions locally.
+
+```shell
+az login
+```
+
+Your browser window will open and you will be prompted to enter your Azure login credentials. After successful authentication, your terminal will display your subscription information. You do not need to save this output as it is saved in your system for Terraform to use.
+
+```shell
+You have logged in. Now let us find all the subscriptions to which you have access...
+
+[
+ {
+ "cloudName": "AzureCloud",
+ "homeTenantId": "home-Tenant-Id",
+ "id": "subscription-id",
+ "isDefault": true,
+ "managedByTenants": [],
+ "name": "Subscription-Name",
+ "state": "Enabled",
+ "tenantId": "0envbwi39-TenantId",
+ "user": {
+ "name": "your-username@domain.com",
+ "type": "user"
+ }
+ }
+]
+```
+
+If you have more than one subscription, specify the subscription-id you want to use with command below:
+```shell
+az account set --subscription
+```
+
+### Provision the Resources
+
+After login Azure CLI with your account, now you can use the terraform script to create Azure Resources.
+
+#### Run with Bash
+
+```shell
+# In the root directory of the sample
+# Initialize your Terraform configuration
+terraform -chdir=./terraform init
+
+# Apply your Terraform Configuration
+terraform -chdir=./terraform apply -auto-approve
+
+```
+
+#### Run with Powershell
+
+```shell
+# In the root directory of the sample
+# Initialize your Terraform configuration
+terraform -chdir=terraform init
+
+# Apply your Terraform Configuration
+terraform -chdir=terraform apply -auto-approve
+
+```
+
+It may take a few minutes to run the script. After successful running, you will see prompt information like below:
+
+```shell
+azurecaf_name.appconfig: Creating...
+azurecaf_name.resource_group: Creating...
+...
+azurerm_resource_group.main: Creating...
+...
+azurerm_role_assignment.appconf_dataowner: Creating...
+...
+Apply complete! Resources: 6 added, 0 changed, 0 destroyed.
+
+```
+
+You can go to [Azure portal](https://ms.portal.azure.com/) in your web browser to check the resources you created.
+
+### Export Output to Your Local Environment
+Running the command below to export environment values:
+
+#### Run with Bash
+
+```shell
+source ./terraform/setup_env.sh
+```
+
+#### Run with Powershell
+
+```shell
+terraform\setup_env.ps1
+```
+
+If you want to run the sample in debug mode, you can save the output value.
+
+```shell
+APPCONFIGURATION_ENDPOINT=...
+```
+
+## Run Locally
+
+### Run the sample with Maven
+
+In your terminal, run `mvn clean spring-boot:run`.
+
+```shell
+mvn clean spring-boot:run
+```
+
+### Run the sample in IDEs
+
+You can debug your sample by adding the saved output values to the tool's environment variables or the sample's `application.yaml` file.
+
+* If your tool is `IDEA`, please refer to [Debug your first Java application](https://www.jetbrains.com/help/idea/debugging-your-first-java-application.html) and [add environment variables](https://www.jetbrains.com/help/objc/add-environment-variables-and-program-arguments.html#add-environment-variables).
+
+* If your tool is `ECLIPSE`, please refer to [Debugging the Eclipse IDE for Java Developers](https://www.eclipse.org/community/eclipse_newsletter/2017/june/article1.php) and [Eclipse Environment Variable Setup](https://examples.javacodegeeks.com/desktop-java/ide/eclipse/eclipse-environment-variable-setup-example/).
+
+## Verify This Sample
+View the below results in the console.
+
+```text
+Returned the from Azure App Configuration: sample-key, hello from default application
+```
+
+
+## Clean Up Resources
+After running the sample, if you don't want to run the sample, remember to destroy the Azure resources you created to avoid unnecessary billing.
+
+The terraform destroy command terminates resources managed by your Terraform project.
+To destroy the resources you created.
+
+#### Run with Bash
+
+```shell
+terraform -chdir=./terraform destroy -auto-approve
+```
+
+#### Run with Powershell
+
+```shell
+terraform -chdir=terraform destroy -auto-approve
+```
diff --git a/appconfiguration/spring-cloud-azure-starter-appconfiguration/appconfiguration-client/pom.xml b/appconfiguration/spring-cloud-azure-starter-appconfiguration/appconfiguration-client/pom.xml
new file mode 100644
index 000000000..b1eabc63d
--- /dev/null
+++ b/appconfiguration/spring-cloud-azure-starter-appconfiguration/appconfiguration-client/pom.xml
@@ -0,0 +1,35 @@
+
+
+ 4.0.0
+
+
+ com.azure.spring
+ azure-spring-boot-samples
+ 1.0.0
+ ../../../pom.xml
+
+
+ appconfiguration-client
+ 1.0.0
+ jar
+
+ Read and Write Data with Azure AppConfiguration Using ConfigurationClient
+ Sample project for Spring Cloud Azure Starter AppConfiguration
+
+
+
+ com.azure.spring
+ spring-cloud-azure-starter-appconfiguration
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+ org.springframework.boot
+ spring-boot-starter-logging
+
+
+
diff --git a/appconfiguration/spring-cloud-azure-starter-appconfiguration/appconfiguration-client/src/main/java/com/azure/spring/sample/appconfiguration/AppConfigurationClientApplication.java b/appconfiguration/spring-cloud-azure-starter-appconfiguration/appconfiguration-client/src/main/java/com/azure/spring/sample/appconfiguration/AppConfigurationClientApplication.java
new file mode 100644
index 000000000..e32f24444
--- /dev/null
+++ b/appconfiguration/spring-cloud-azure-starter-appconfiguration/appconfiguration-client/src/main/java/com/azure/spring/sample/appconfiguration/AppConfigurationClientApplication.java
@@ -0,0 +1,31 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+package com.azure.spring.sample.appconfiguration;
+
+import com.azure.data.appconfiguration.ConfigurationClient;
+import com.azure.data.appconfiguration.models.ConfigurationSetting;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.CommandLineRunner;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@SpringBootApplication
+public class AppConfigurationClientApplication implements CommandLineRunner {
+
+ private static final Logger logger = LoggerFactory.getLogger(AppConfigurationClientApplication.class);
+
+ @Autowired
+ private ConfigurationClient configurationClient;
+
+ public static void main(String[] args) {
+ SpringApplication.run(AppConfigurationClientApplication.class, args);
+ }
+
+ public void run(String... var1) throws Exception {
+ String sampleKey = "sample-key";
+ ConfigurationSetting configurationSetting = configurationClient.getConfigurationSetting(sampleKey, "somelabel");
+ logger.info("Returned the from Azure App Configuration: {}, {}", sampleKey, configurationSetting.getValue());
+ }
+}
diff --git a/appconfiguration/spring-cloud-azure-starter-appconfiguration/appconfiguration-client/src/main/resources/application.yml b/appconfiguration/spring-cloud-azure-starter-appconfiguration/appconfiguration-client/src/main/resources/application.yml
new file mode 100644
index 000000000..a2696be56
--- /dev/null
+++ b/appconfiguration/spring-cloud-azure-starter-appconfiguration/appconfiguration-client/src/main/resources/application.yml
@@ -0,0 +1,6 @@
+spring:
+ cloud:
+ azure:
+ appconfiguration:
+ endpoint: ${APPCONFIGURATION_ENDPOINT}
+
diff --git a/appconfiguration/spring-cloud-azure-starter-appconfiguration/appconfiguration-client/terraform/main.tf b/appconfiguration/spring-cloud-azure-starter-appconfiguration/appconfiguration-client/terraform/main.tf
new file mode 100644
index 000000000..9030b34a8
--- /dev/null
+++ b/appconfiguration/spring-cloud-azure-starter-appconfiguration/appconfiguration-client/terraform/main.tf
@@ -0,0 +1,73 @@
+terraform {
+ required_providers {
+ azurerm = {
+ source = "hashicorp/azurerm"
+ version = "2.99"
+ }
+ azurecaf = {
+ source = "aztfmod/azurecaf"
+ version = "1.2.16"
+ }
+ }
+}
+
+provider "azurerm" {
+ features {}
+}
+
+// ===========resource_group===========
+resource "azurecaf_name" "resource_group" {
+ name = var.application_name
+ resource_type = "azurerm_resource_group"
+ random_length = 5
+ clean_input = true
+}
+
+resource "azurerm_resource_group" "main" {
+ name = azurecaf_name.resource_group.result
+ location = var.location
+
+ tags = {
+ "terraform" = "true"
+ "application-name" = var.application_name
+ "spring-cloud-azure-sample" = var.sample_tag_value
+ }
+}
+
+data "azurerm_client_config" "current" {
+}
+
+// ===========azurerm_app_configuation===========
+resource "azurecaf_name" "appconfig" {
+ name = var.application_name
+ resource_type = "azurerm_app_configuration"
+ random_length = 5
+ clean_input = true
+}
+
+resource "azurerm_app_configuration" "appconfig_resource" {
+ name = azurecaf_name.appconfig.result
+ location = azurerm_resource_group.main.location
+ resource_group_name = azurerm_resource_group.main.name
+ sku = "standard"
+ tags = {
+ "terraform" = "true"
+ "spring-cloud-azure-sample" = var.sample_tag_value
+ }
+}
+
+resource "azurerm_role_assignment" "appconf_dataowner" {
+ scope = azurerm_app_configuration.appconfig_resource.id
+ role_definition_name = "App Configuration Data Owner"
+ principal_id = data.azurerm_client_config.current.object_id
+}
+
+resource "azurerm_app_configuration_key" "test" {
+ configuration_store_id = azurerm_app_configuration.appconfig_resource.id
+ key = "sample-key"
+ label = "somelabel"
+ value = "hello from default application"
+ depends_on = [
+ azurerm_role_assignment.appconf_dataowner
+ ]
+}
diff --git a/appconfiguration/spring-cloud-azure-starter-appconfiguration/appconfiguration-client/terraform/outputs.tf b/appconfiguration/spring-cloud-azure-starter-appconfiguration/appconfiguration-client/terraform/outputs.tf
new file mode 100644
index 000000000..8af8e0b4b
--- /dev/null
+++ b/appconfiguration/spring-cloud-azure-starter-appconfiguration/appconfiguration-client/terraform/outputs.tf
@@ -0,0 +1,9 @@
+output "APPCONFIGURATION_ENDPOINT" {
+ value = azurerm_app_configuration.appconfig_resource.endpoint
+ description = "The app configuration endpoint."
+}
+
+output "RESOURCE_GROUP_NAME" {
+ value = azurerm_resource_group.main.name
+ description = "The resource group name."
+}
diff --git a/appconfiguration/spring-cloud-azure-starter-appconfiguration/appconfiguration-client/terraform/setup_env.ps1 b/appconfiguration/spring-cloud-azure-starter-appconfiguration/appconfiguration-client/terraform/setup_env.ps1
new file mode 100644
index 000000000..30cddfae6
--- /dev/null
+++ b/appconfiguration/spring-cloud-azure-starter-appconfiguration/appconfiguration-client/terraform/setup_env.ps1
@@ -0,0 +1,3 @@
+$env:APPCONFIGURATION_ENDPOINT=$(terraform -chdir=terraform output -raw APPCONFIGURATION_ENDPOINT)
+
+echo APPCONFIGURATION_ENDPOINT=$env:APPCONFIGURATION_ENDPOINT
diff --git a/appconfiguration/spring-cloud-azure-starter-appconfiguration/appconfiguration-client/terraform/setup_env.sh b/appconfiguration/spring-cloud-azure-starter-appconfiguration/appconfiguration-client/terraform/setup_env.sh
new file mode 100644
index 000000000..95c3a3790
--- /dev/null
+++ b/appconfiguration/spring-cloud-azure-starter-appconfiguration/appconfiguration-client/terraform/setup_env.sh
@@ -0,0 +1,2 @@
+export APPCONFIGURATION_ENDPOINT=$(terraform -chdir=./terraform output -raw APPCONFIGURATION_ENDPOINT)
+echo APPCONFIGURATION_ENDPOINT=$APPCONFIGURATION_ENDPOINT
diff --git a/appconfiguration/spring-cloud-azure-starter-appconfiguration/appconfiguration-client/terraform/variables.tf b/appconfiguration/spring-cloud-azure-starter-appconfiguration/appconfiguration-client/terraform/variables.tf
new file mode 100644
index 000000000..0c967de16
--- /dev/null
+++ b/appconfiguration/spring-cloud-azure-starter-appconfiguration/appconfiguration-client/terraform/variables.tf
@@ -0,0 +1,17 @@
+variable "application_name" {
+ type = string
+ description = "The name of your application."
+ default = "appconfiguration-client"
+}
+
+variable "location" {
+ type = string
+ description = "The Azure region where all resources in this example should be created."
+ default = "eastus"
+}
+
+variable "sample_tag_value" {
+ type = string
+ description = "The value of spring-cloud-azure-sample tag."
+ default = "true"
+}
diff --git a/cache/spring-cloud-azure-starter/spring-cloud-azure-sample-cache/README.md b/cache/spring-cloud-azure-starter/spring-cloud-azure-sample-cache/README.md
index 79779a9de..ed5a5dd7d 100644
--- a/cache/spring-cloud-azure-starter/spring-cloud-azure-sample-cache/README.md
+++ b/cache/spring-cloud-azure-starter/spring-cloud-azure-sample-cache/README.md
@@ -120,7 +120,7 @@ source ./terraform/setup_env.sh
#### Run with Powershell
```shell
-. terraform\setup_env.ps1
+terraform\setup_env.ps1
```
If you want to run the sample in debug mode, you can save the output value.
diff --git a/cosmos/azure-spring-data-cosmos/cosmos-multi-database-multi-account/README.md b/cosmos/azure-spring-data-cosmos/cosmos-multi-database-multi-account/README.md
index 88a4ea651..1179c931f 100644
--- a/cosmos/azure-spring-data-cosmos/cosmos-multi-database-multi-account/README.md
+++ b/cosmos/azure-spring-data-cosmos/cosmos-multi-database-multi-account/README.md
@@ -117,7 +117,7 @@ source ./terraform/setup_env.sh
#### Run with Powershell
```shell
-. terraform\setup_env.ps1
+terraform\setup_env.ps1
```
If you want to run the sample in debug mode, you can save the output value.
diff --git a/cosmos/azure-spring-data-cosmos/cosmos-multi-database-single-account/README.md b/cosmos/azure-spring-data-cosmos/cosmos-multi-database-single-account/README.md
index 0e482b616..8d3d1d788 100644
--- a/cosmos/azure-spring-data-cosmos/cosmos-multi-database-single-account/README.md
+++ b/cosmos/azure-spring-data-cosmos/cosmos-multi-database-single-account/README.md
@@ -115,7 +115,7 @@ source ./terraform/setup_env.sh
#### Run with Powershell
```shell
-. terraform\setup_env.ps1
+terraform\setup_env.ps1
```
If you want to run the sample in debug mode, you can save the output value.
diff --git a/cosmos/spring-cloud-azure-starter-cosmos/spring-cloud-azure-cosmos-sample/README.md b/cosmos/spring-cloud-azure-starter-cosmos/spring-cloud-azure-cosmos-sample/README.md
index 68dd60f08..642cf4d20 100644
--- a/cosmos/spring-cloud-azure-starter-cosmos/spring-cloud-azure-cosmos-sample/README.md
+++ b/cosmos/spring-cloud-azure-starter-cosmos/spring-cloud-azure-cosmos-sample/README.md
@@ -122,7 +122,7 @@ source ./terraform/setup_env.sh
#### Run with Powershell
```shell
-. terraform\setup_env.ps1
+terraform\setup_env.ps1
```
If you want to run the sample in debug mode, you can save the output value.
diff --git a/cosmos/spring-cloud-azure-starter-data-cosmos/spring-cloud-azure-data-cosmos-sample/README.md b/cosmos/spring-cloud-azure-starter-data-cosmos/spring-cloud-azure-data-cosmos-sample/README.md
index 4dc55583a..473be66f4 100644
--- a/cosmos/spring-cloud-azure-starter-data-cosmos/spring-cloud-azure-data-cosmos-sample/README.md
+++ b/cosmos/spring-cloud-azure-starter-data-cosmos/spring-cloud-azure-data-cosmos-sample/README.md
@@ -122,7 +122,7 @@ source ./terraform/setup_env.sh
#### Run with Powershell
```shell
-. terraform\setup_env.ps1
+terraform\setup_env.ps1
```
If you want to run the sample in debug mode, you can save the output value.
diff --git a/eventhubs/spring-cloud-azure-starter-eventhubs/eventhubs-client/README.md b/eventhubs/spring-cloud-azure-starter-eventhubs/eventhubs-client/README.md
new file mode 100644
index 000000000..fb3920351
--- /dev/null
+++ b/eventhubs/spring-cloud-azure-starter-eventhubs/eventhubs-client/README.md
@@ -0,0 +1,201 @@
+# Using Azure Event Hubs with Spring Cloud Azure Starter Event Hubs
+
+This code sample demonstrates how to use the client of `Azure Event Hubs SDK` to interact with `Azure Event Hubs`.
+
+## What You Will Build
+
+You will build an application that uses `spring-cloud-azure-starter-eventhubs` to send and receive messages with [Azure Event Hubs](https://azure.microsoft.com/services/event-hubs/).
+
+## What You Need
+
+- [An Azure subscription](https://azure.microsoft.com/free/)
+- [Terraform](https://www.terraform.io/)
+- [Azure CLI](https://docs.microsoft.com/cli/azure/install-azure-cli)
+- [JDK8](https://www.oracle.com/java/technologies/downloads/) or later
+- Maven
+- You can also import the code straight into your IDE:
+ - [IntelliJ IDEA](https://www.jetbrains.com/idea/download)
+
+## Provision Azure Resources Required to Run This Sample
+This sample will create Azure resources using Terraform. If you choose to run it without using Terraform to provision resources, please pay attention to:
+> [!IMPORTANT]
+> If you choose to use a security principal to authenticate and authorize with Azure Active Directory for accessing an Azure resource
+> please refer to [Authorize access with Azure AD](https://microsoft.github.io/spring-cloud-azure/current/reference/html/index.html#authorize-access-with-azure-active-directory) to make sure the security principal has been granted the sufficient permission to access the Azure resource.
+
+### Authenticate Using the Azure CLI
+Terraform must authenticate to Azure to create infrastructure.
+
+In your terminal, use the Azure CLI tool to setup your account permissions locally.
+
+```shell
+az login
+```
+
+Your browser window will open and you will be prompted to enter your Azure login credentials. After successful authentication, your terminal will display your subscription information. You do not need to save this output as it is saved in your system for Terraform to use.
+
+```shell
+You have logged in. Now let us find all the subscriptions to which you have access...
+
+[
+ {
+ "cloudName": "AzureCloud",
+ "homeTenantId": "home-Tenant-Id",
+ "id": "subscription-id",
+ "isDefault": true,
+ "managedByTenants": [],
+ "name": "Subscription-Name",
+ "state": "Enabled",
+ "tenantId": "0envbwi39-TenantId",
+ "user": {
+ "name": "your-username@domain.com",
+ "type": "user"
+ }
+ }
+]
+```
+
+If you have more than one subscription, specify the subscription-id you want to use with command below:
+```shell
+az account set --subscription
+```
+
+### Provision the Resources
+
+After login Azure CLI with your account, now you can use the terraform script to create Azure Resources.
+
+#### Run with Bash
+
+```shell
+# In the root directory of the sample
+# Initialize your Terraform configuration
+terraform -chdir=./terraform init
+
+# Apply your Terraform Configuration
+terraform -chdir=./terraform apply -auto-approve
+
+```
+
+#### Run with Powershell
+
+```shell
+# In the root directory of the sample
+# Initialize your Terraform configuration
+terraform -chdir=terraform init
+
+# Apply your Terraform Configuration
+terraform -chdir=terraform apply -auto-approve
+
+```
+
+It may take a few minutes to run the script. After successful running, you will see prompt information like below:
+
+```shell
+
+
+azurerm_resource_group.main: Creating...
+azurerm_resource_group.main: Creation complete after 3s [id=/subscriptions/799c12ba-353c-44a1-883d-84808ebb2216/resourceGroups/rg-eventhubs-binder-nxatj]
+azurerm_eventhub_namespace.eventhubs_namespace: Creating...
+azurerm_storage_account.storage_account: Creating...
+...
+azurerm_storage_account.storage_account: Creation complete ...
+azurerm_storage_container.storage_container: Creating...
+azurerm_role_assignment.role_storage_account_contributor: Creating...
+azurerm_storage_container.storage_container: Creation complete ...
+azurerm_role_assignment.role_storage_blob_data_owner: Creating...
+...
+azurerm_role_assignment.role_storage_blob_data_owner: Creation complete ...
+azurerm_role_assignment.role_storage_account_contributor: Creation complete ...
+...
+azurerm_eventhub_namespace.eventhubs_namespace: Creation complete ...
+azurerm_eventhub.eventhubs: Creating...
+azurerm_eventhub.eventhubs: Creation complete ...
+...
+azurerm_role_assignment.role_eventhubs_data_owner: Creation complete ...
+
+Apply complete! Resources: 8 added, 0 changed, 0 destroyed.
+
+Outputs:
+...
+
+
+```
+
+You can go to [Azure portal](https://ms.portal.azure.com/) in your web browser to check the resources you created.
+
+### Export Output to Your Local Environment
+Running the command below to export environment values:
+
+#### Run with Bash
+
+```shell
+source ./terraform/setup_env.sh
+```
+
+#### Run with Powershell
+
+```shell
+terraform\setup_env.ps1
+```
+
+If you want to run the sample in debug mode, you can save the output value.
+
+```shell
+AZURE_EVENTHUBS_NAMESPACE=...
+AZURE_STORAGE_CONTAINER_NAME=...
+AZURE_STORAGE_ACCOUNT_NAME=...
+AZURE_EVENTHUB_NAME=...
+AZURE_EVENTHUB_CONSUMER_GROUP=...
+```
+
+## Run Locally
+
+### Run the sample with Maven
+
+In your terminal, run `mvn clean spring-boot:run`.
+
+```shell
+mvn clean spring-boot:run
+```
+
+### Run the sample in IDEs
+
+You can debug your sample by adding the saved output values to the tool's environment variables or the sample's `application.yaml` file.
+
+* If your tool is `IDEA`, please refer to [Debug your first Java application](https://www.jetbrains.com/help/idea/debugging-your-first-java-application.html) and [add environment variables](https://www.jetbrains.com/help/objc/add-environment-variables-and-program-arguments.html#add-environment-variables).
+
+* If your tool is `ECLIPSE`, please refer to [Debugging the Eclipse IDE for Java Developers](https://www.eclipse.org/community/eclipse_newsletter/2017/june/article1.php) and [Eclipse Environment Variable Setup](https://examples.javacodegeeks.com/desktop-java/ide/eclipse/eclipse-environment-variable-setup-example/).
+
+## Verify This Sample
+
+1. Verify in your app’s logs that similar messages were posted:
+
+```shell
+New message received: 'Hello world, 17' ...
+Message 'Hello world, 17' successfully checkpointed
+...
+New message received: 'Hello world, 18' ...
+Message 'Hello world, 18' successfully checkpointed
+...
+New message received: 'Hello world, 27' ...
+Message 'Hello world, 27' successfully checkpointed
+
+```
+
+## Clean Up Resources
+After running the sample, if you don't want to run the sample, remember to destroy the Azure resources you created to avoid unnecessary billing.
+
+The terraform destroy command terminates resources managed by your Terraform project.
+To destroy the resources you created.
+
+#### Run with Bash
+
+```shell
+terraform -chdir=./terraform destroy -auto-approve
+```
+
+#### Run with Powershell
+
+```shell
+terraform -chdir=terraform destroy -auto-approve
+```
+
diff --git a/eventhubs/spring-cloud-azure-starter-eventhubs/eventhubs-client/pom.xml b/eventhubs/spring-cloud-azure-starter-eventhubs/eventhubs-client/pom.xml
new file mode 100644
index 000000000..0875d2e9f
--- /dev/null
+++ b/eventhubs/spring-cloud-azure-starter-eventhubs/eventhubs-client/pom.xml
@@ -0,0 +1,27 @@
+
+
+
+ 4.0.0
+
+
+ com.azure.spring
+ azure-spring-boot-samples
+ 1.0.0
+ ../../../pom.xml
+
+
+ eventhubs-client
+ 1.0.0
+ jar
+
+ Communicate to a Single Event Hubs Namespace via Azure SDK for EventHubs
+
+
+
+ com.azure.spring
+ spring-cloud-azure-starter-eventhubs
+
+
+
diff --git a/eventhubs/spring-cloud-azure-starter-eventhubs/eventhubs-client/src/main/java/com/azure/spring/sample/eventhubs/client/EventHubClientApplication.java b/eventhubs/spring-cloud-azure-starter-eventhubs/eventhubs-client/src/main/java/com/azure/spring/sample/eventhubs/client/EventHubClientApplication.java
new file mode 100644
index 000000000..4b672bb51
--- /dev/null
+++ b/eventhubs/spring-cloud-azure-starter-eventhubs/eventhubs-client/src/main/java/com/azure/spring/sample/eventhubs/client/EventHubClientApplication.java
@@ -0,0 +1,60 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+
+package com.azure.spring.sample.eventhubs.client;
+
+import com.azure.core.util.IterableStream;
+import com.azure.messaging.eventhubs.EventData;
+import com.azure.messaging.eventhubs.EventHubConsumerClient;
+import com.azure.messaging.eventhubs.EventHubProducerClient;
+import com.azure.messaging.eventhubs.models.EventPosition;
+import com.azure.messaging.eventhubs.models.PartitionEvent;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.CommandLineRunner;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+import java.util.Arrays;
+import java.util.Iterator;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Sample for EventHubConsumerClient and EventHubProducerClient usage.
+ */
+@SpringBootApplication
+public class EventHubClientApplication implements CommandLineRunner {
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(EventHubClientApplication.class);
+
+ @Autowired
+ private EventHubConsumerClient consumerClient;
+
+ @Autowired
+ private EventHubProducerClient producerClient;
+
+ public static void main(String[] args) {
+ SpringApplication.run(EventHubClientApplication.class, args);
+ }
+
+ @Override
+ public void run(String... args) throws Exception {
+ LOGGER.info("Event Hub producer client created");
+ producerClient.send(Arrays.asList(new EventData("Test event - graalvm")));
+ LOGGER.info("Sent message to Event Hub");
+ producerClient.close();
+
+ TimeUnit.SECONDS.sleep(3);
+ String PARTITION_ID = "0";
+ IterableStream partitionEvents = consumerClient.receiveFromPartition(PARTITION_ID, 1,
+ EventPosition.earliest());
+ Iterator iterator = partitionEvents.stream().iterator();
+ if (iterator.hasNext()) {
+ PartitionEvent pe = iterator.next();
+ LOGGER.info("Received message: {}", pe.getData().getBodyAsString());
+ } else {
+ LOGGER.warn("Failed to receive message.");
+ }
+ }
+}
diff --git a/eventhubs/spring-cloud-azure-starter-eventhubs/eventhubs-client/src/main/resources/application.yaml b/eventhubs/spring-cloud-azure-starter-eventhubs/eventhubs-client/src/main/resources/application.yaml
new file mode 100644
index 000000000..04b668d06
--- /dev/null
+++ b/eventhubs/spring-cloud-azure-starter-eventhubs/eventhubs-client/src/main/resources/application.yaml
@@ -0,0 +1,8 @@
+spring:
+ cloud:
+ azure:
+ eventhubs:
+ namespace: ${AZURE_EVENTHUBS_NAMESPACE}
+ event-hub-name: ${AZURE_EVENTHUB_NAME}
+ consumer:
+ consumer-group: $Default
diff --git a/eventhubs/spring-cloud-azure-starter-eventhubs/eventhubs-client/terraform/main.tf b/eventhubs/spring-cloud-azure-starter-eventhubs/eventhubs-client/terraform/main.tf
new file mode 100644
index 000000000..4acf0e47a
--- /dev/null
+++ b/eventhubs/spring-cloud-azure-starter-eventhubs/eventhubs-client/terraform/main.tf
@@ -0,0 +1,71 @@
+terraform {
+ required_providers {
+ azurerm = {
+ source = "hashicorp/azurerm"
+ version = "2.99"
+ }
+ azurecaf = {
+ source = "aztfmod/azurecaf"
+ version = "1.2.16"
+ }
+ }
+}
+
+provider "azurerm" {
+ features {}
+}
+
+resource "azurecaf_name" "resource_group" {
+ name = var.application_name
+ resource_type = "azurerm_resource_group"
+ random_length = 5
+ clean_input = true
+}
+
+resource "azurerm_resource_group" "main" {
+ name = azurecaf_name.resource_group.result
+ location = var.location
+
+ tags = {
+ terraform = "true"
+ application-name = var.application_name
+ spring-cloud-azure-sample = var.sample_tag_value
+ }
+}
+
+data "azurerm_client_config" "current" {
+}
+
+# =================== eventhubs ================
+resource "azurecaf_name" "azurecaf_name_eventhubs" {
+ name = var.application_name
+ resource_type = "azurerm_eventhub_namespace"
+ random_length = 5
+ clean_input = true
+}
+
+resource "azurerm_eventhub_namespace" "eventhubs_namespace" {
+ name = azurecaf_name.azurecaf_name_eventhubs.result
+ location = var.location
+ resource_group_name = azurerm_resource_group.main.name
+ sku = "Standard"
+ capacity = 1
+
+ tags = {
+ terraform_azure_sample = var.sample_tag_value
+ }
+}
+
+resource "azurerm_eventhub" "eventhubs" {
+ name = "eh1"
+ namespace_name = azurerm_eventhub_namespace.eventhubs_namespace.name
+ resource_group_name = azurerm_resource_group.main.name
+ partition_count = 2
+ message_retention = 1
+}
+
+resource "azurerm_role_assignment" "role_eventhubs_data_owner" {
+ scope = azurerm_eventhub.eventhubs.id
+ role_definition_name = "Azure Event Hubs Data Owner"
+ principal_id = data.azurerm_client_config.current.object_id
+}
diff --git a/eventhubs/spring-cloud-azure-starter-eventhubs/eventhubs-client/terraform/outputs.tf b/eventhubs/spring-cloud-azure-starter-eventhubs/eventhubs-client/terraform/outputs.tf
new file mode 100644
index 000000000..a14bdd46d
--- /dev/null
+++ b/eventhubs/spring-cloud-azure-starter-eventhubs/eventhubs-client/terraform/outputs.tf
@@ -0,0 +1,14 @@
+output "AZURE_EVENTHUBS_NAMESPACE" {
+ value = azurerm_eventhub_namespace.eventhubs_namespace.name
+ description = "The event hubs namespace."
+}
+
+output "AZURE_EVENTHUB_NAME" {
+ value = azurerm_eventhub.eventhubs.name
+ description = "The name of created event hubs."
+}
+
+output "RESOURCE_GROUP_NAME" {
+ value = azurerm_resource_group.main.name
+ description = "The resource group name."
+}
diff --git a/eventhubs/spring-cloud-azure-starter-eventhubs/eventhubs-client/terraform/setup_env.ps1 b/eventhubs/spring-cloud-azure-starter-eventhubs/eventhubs-client/terraform/setup_env.ps1
new file mode 100644
index 000000000..967c40051
--- /dev/null
+++ b/eventhubs/spring-cloud-azure-starter-eventhubs/eventhubs-client/terraform/setup_env.ps1
@@ -0,0 +1,5 @@
+$env:AZURE_EVENTHUBS_NAMESPACE=$(terraform -chdir=terraform output -raw AZURE_EVENTHUBS_NAMESPACE)
+$env:AZURE_EVENTHUB_NAME=$(terraform -chdir=terraform output -raw AZURE_EVENTHUB_NAME)
+
+echo AZURE_EVENTHUBS_NAMESPACE=$env:AZURE_EVENTHUBS_NAMESPACE
+echo AZURE_EVENTHUB_NAME=$env:AZURE_EVENTHUB_NAME
diff --git a/eventhubs/spring-cloud-azure-starter-eventhubs/eventhubs-client/terraform/setup_env.sh b/eventhubs/spring-cloud-azure-starter-eventhubs/eventhubs-client/terraform/setup_env.sh
new file mode 100644
index 000000000..47139e304
--- /dev/null
+++ b/eventhubs/spring-cloud-azure-starter-eventhubs/eventhubs-client/terraform/setup_env.sh
@@ -0,0 +1,5 @@
+export AZURE_EVENTHUBS_NAMESPACE=$(terraform -chdir=./terraform output -raw AZURE_EVENTHUBS_NAMESPACE)
+export AZURE_EVENTHUB_NAME=$(terraform -chdir=./terraform output -raw AZURE_EVENTHUB_NAME)
+
+echo AZURE_EVENTHUBS_NAMESPACE=$AZURE_EVENTHUBS_NAMESPACE
+echo AZURE_EVENTHUB_NAME=$AZURE_EVENTHUB_NAME
diff --git a/eventhubs/spring-cloud-azure-starter-eventhubs/eventhubs-client/terraform/variables.tf b/eventhubs/spring-cloud-azure-starter-eventhubs/eventhubs-client/terraform/variables.tf
new file mode 100644
index 000000000..b00d9ac5b
--- /dev/null
+++ b/eventhubs/spring-cloud-azure-starter-eventhubs/eventhubs-client/terraform/variables.tf
@@ -0,0 +1,17 @@
+variable "application_name" {
+ type = string
+ description = "The name of your application."
+ default = "eventhubs-client"
+}
+
+variable "location" {
+ type = string
+ description = "The Azure region where all resources in this example should be created."
+ default = "eastus"
+}
+
+variable "sample_tag_value" {
+ type = string
+ description = "The value of spring-cloud-azure-sample tag."
+ default = "true"
+}
diff --git a/eventhubs/spring-cloud-azure-starter-integration-eventhubs/eventhubs-integration/README.md b/eventhubs/spring-cloud-azure-starter-integration-eventhubs/eventhubs-integration/README.md
index 51ec00e65..ff8c99fa5 100644
--- a/eventhubs/spring-cloud-azure-starter-integration-eventhubs/eventhubs-integration/README.md
+++ b/eventhubs/spring-cloud-azure-starter-integration-eventhubs/eventhubs-integration/README.md
@@ -133,7 +133,7 @@ source ./terraform/setup_env.sh
#### Run with Powershell
```shell
-. terraform\setup_env.ps1
+terraform\setup_env.ps1
```
If you want to run the sample in debug mode, you can save the output value.
diff --git a/eventhubs/spring-cloud-azure-starter-integration-eventhubs/eventhubs-integration/pom.xml b/eventhubs/spring-cloud-azure-starter-integration-eventhubs/eventhubs-integration/pom.xml
index f90512a43..19d9e4e87 100644
--- a/eventhubs/spring-cloud-azure-starter-integration-eventhubs/eventhubs-integration/pom.xml
+++ b/eventhubs/spring-cloud-azure-starter-integration-eventhubs/eventhubs-integration/pom.xml
@@ -2,38 +2,33 @@
- 4.0.0
+ 4.0.0
-
- com.azure.spring
- azure-spring-boot-samples
- 1.0.0
- ../../../pom.xml
-
-
- spring-cloud-azure-starter-integration-sample-eventhubs
+
+ com.azure.spring
+ azure-spring-boot-samples
1.0.0
- jar
+ ../../../pom.xml
+
- Communicate to Event Hubs via Spring Integration
+ eventhubs-integration
+ 1.0.0
+ jar
-
-
- org.springframework.boot
- spring-boot-starter-web
-
-
- com.azure.spring
- spring-cloud-azure-starter-integration-eventhubs
-
-
- org.springframework.boot
- spring-boot-starter-logging
-
-
- org.hibernate.validator
- hibernate-validator
-
+ Communicate to Event Hubs via Spring Integration
-
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+ com.azure.spring
+ spring-cloud-azure-starter-integration-eventhubs
+
+
+ org.springframework.boot
+ spring-boot-starter-logging
+
+
diff --git a/eventhubs/spring-cloud-azure-starter/spring-cloud-azure-sample-eventhubs-kafka/README.md b/eventhubs/spring-cloud-azure-starter/spring-cloud-azure-sample-eventhubs-kafka/README.md
index 38c4c45a1..75954f835 100644
--- a/eventhubs/spring-cloud-azure-starter/spring-cloud-azure-sample-eventhubs-kafka/README.md
+++ b/eventhubs/spring-cloud-azure-starter/spring-cloud-azure-sample-eventhubs-kafka/README.md
@@ -126,7 +126,7 @@ source ./terraform/setup_env.sh
#### Run with Powershell
```shell
-. terraform\setup_env.ps1
+terraform\setup_env.ps1
```
If you want to run the sample in debug mode, you can save the output value.
diff --git a/eventhubs/spring-cloud-azure-stream-binder-eventhubs/eventhubs-binder/README.md b/eventhubs/spring-cloud-azure-stream-binder-eventhubs/eventhubs-binder/README.md
index 16189b722..b4d75be42 100644
--- a/eventhubs/spring-cloud-azure-stream-binder-eventhubs/eventhubs-binder/README.md
+++ b/eventhubs/spring-cloud-azure-stream-binder-eventhubs/eventhubs-binder/README.md
@@ -137,7 +137,7 @@ source ./terraform/setup_env.sh
#### Run with Powershell
```shell
-. terraform\setup_env.ps1
+terraform\setup_env.ps1
```
If you want to run the sample in debug mode, you can save the output value.
diff --git a/eventhubs/spring-cloud-azure-stream-binder-eventhubs/eventhubs-binder/pom.xml b/eventhubs/spring-cloud-azure-stream-binder-eventhubs/eventhubs-binder/pom.xml
index c60f85ff5..544f8b59c 100644
--- a/eventhubs/spring-cloud-azure-stream-binder-eventhubs/eventhubs-binder/pom.xml
+++ b/eventhubs/spring-cloud-azure-stream-binder-eventhubs/eventhubs-binder/pom.xml
@@ -3,45 +3,33 @@
- 4.0.0
+ 4.0.0
-
- com.azure.spring
- azure-spring-boot-samples
- 1.0.0
- ../../../pom.xml
-
-
- spring-cloud-azure-sample-stream-eventhubs-binder
+
+ com.azure.spring
+ azure-spring-boot-samples
1.0.0
- jar
+ ../../../pom.xml
+
- Communicate to a Single Event Hubs Namespace via Spring Cloud Stream
+ eventhubs-binder
+ 1.0.0
+ jar
-
- true
-
+ Communicate to a Single Event Hubs Namespace via Spring Cloud Stream
-
-
- org.springframework.boot
- spring-boot-starter-web
-
-
- com.azure.spring
- spring-cloud-azure-stream-binder-eventhubs
-
-
- org.springframework.boot
- spring-boot-starter-logging
-
-
- org.hibernate.validator
- hibernate-validator
-
-
- org.springframework.boot
- spring-boot-starter-actuator
-
-
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+ com.azure.spring
+ spring-cloud-azure-stream-binder-eventhubs
+
+
+ org.springframework.boot
+ spring-boot-starter-logging
+
+
diff --git a/eventhubs/spring-cloud-azure-stream-binder-eventhubs/eventhubs-binder/src/main/resources/application-batch.yaml b/eventhubs/spring-cloud-azure-stream-binder-eventhubs/eventhubs-binder/src/main/resources/application-batch.yaml
index 26d5610d8..4827a9afa 100644
--- a/eventhubs/spring-cloud-azure-stream-binder-eventhubs/eventhubs-binder/src/main/resources/application-batch.yaml
+++ b/eventhubs/spring-cloud-azure-stream-binder-eventhubs/eventhubs-binder/src/main/resources/application-batch.yaml
@@ -32,4 +32,4 @@ spring:
errorChannelEnabled: true
poller:
initial-delay: 0
- fixed-delay: 1000
\ No newline at end of file
+ fixed-delay: 1000
diff --git a/eventhubs/spring-cloud-azure-stream-binder-eventhubs/eventhubs-multibinders/README.md b/eventhubs/spring-cloud-azure-stream-binder-eventhubs/eventhubs-multibinders/README.md
index 3baab9bef..5b0299855 100644
--- a/eventhubs/spring-cloud-azure-stream-binder-eventhubs/eventhubs-multibinders/README.md
+++ b/eventhubs/spring-cloud-azure-stream-binder-eventhubs/eventhubs-multibinders/README.md
@@ -137,7 +137,7 @@ source ./terraform/setup_env.sh
#### Run with Powershell
```shell
-. terraform\setup_env.ps1
+terraform\setup_env.ps1
```
If you want to run the sample in debug mode, you can save the output value.
diff --git a/eventhubs/spring-cloud-azure-stream-binder-eventhubs/eventhubs-multibinders/pom.xml b/eventhubs/spring-cloud-azure-stream-binder-eventhubs/eventhubs-multibinders/pom.xml
index a999b4926..cd327ef38 100644
--- a/eventhubs/spring-cloud-azure-stream-binder-eventhubs/eventhubs-multibinders/pom.xml
+++ b/eventhubs/spring-cloud-azure-stream-binder-eventhubs/eventhubs-multibinders/pom.xml
@@ -3,39 +3,33 @@
- 4.0.0
+ 4.0.0
-
- com.azure.spring
- azure-spring-boot-samples
- 1.0.0
- ../../../pom.xml
-
-
- spring-cloud-azure-sample-stream-eventhubs-multibinders
+
+ com.azure.spring
+ azure-spring-boot-samples
1.0.0
- jar
-
- Communicate to Multiple Event Hubs Namespaces via Spring Cloud Stream
+ ../../../pom.xml
+
-
-
- org.springframework.boot
- spring-boot-starter-web
-
+ spring-cloud-azure-sample-stream-eventhubs-multibinders
+ 1.0.0
+ jar
-
- com.azure.spring
- spring-cloud-azure-stream-binder-eventhubs
-
-
- org.springframework.boot
- spring-boot-starter-logging
-
-
- org.hibernate.validator
- hibernate-validator
-
+ Communicate to Multiple Event Hubs Namespaces via Spring Cloud Stream
-
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+ com.azure.spring
+ spring-cloud-azure-stream-binder-eventhubs
+
+
+ org.springframework.boot
+ spring-boot-starter-logging
+
+
diff --git a/eventhubs/spring-cloud-azure-stream-binder-eventhubs/eventhubs-multibinders/src/main/resources/application.yaml b/eventhubs/spring-cloud-azure-stream-binder-eventhubs/eventhubs-multibinders/src/main/resources/application.yaml
index 496093354..a6a2ad289 100644
--- a/eventhubs/spring-cloud-azure-stream-binder-eventhubs/eventhubs-multibinders/src/main/resources/application.yaml
+++ b/eventhubs/spring-cloud-azure-stream-binder-eventhubs/eventhubs-multibinders/src/main/resources/application.yaml
@@ -55,4 +55,4 @@ spring:
mode: MANUAL
poller:
initial-delay: 0
- fixed-delay: 1000
\ No newline at end of file
+ fixed-delay: 1000
diff --git a/keyvault/azure-securtiy-keyvault-jca/run-with-command-line-server-side/pom.xml b/keyvault/azure-securtiy-keyvault-jca/run-with-command-line-server-side/pom.xml
index 4f95228a7..3055be539 100644
--- a/keyvault/azure-securtiy-keyvault-jca/run-with-command-line-server-side/pom.xml
+++ b/keyvault/azure-securtiy-keyvault-jca/run-with-command-line-server-side/pom.xml
@@ -30,14 +30,4 @@
spring-boot-starter-web
-
-
-
-
- org.springframework.boot
- spring-boot-maven-plugin
-
-
-
-
-
\ No newline at end of file
+
diff --git a/keyvault/spring-cloud-azure-starter-keyvault-secrets/property-source/README.md b/keyvault/spring-cloud-azure-starter-keyvault-secrets/property-source/README.md
index edc227287..ad6d0b6be 100644
--- a/keyvault/spring-cloud-azure-starter-keyvault-secrets/property-source/README.md
+++ b/keyvault/spring-cloud-azure-starter-keyvault-secrets/property-source/README.md
@@ -128,7 +128,7 @@ source ./terraform/setup_env.sh
#### Run with Powershell
```shell
-. terraform\setup_env.ps1
+terraform\setup_env.ps1
```
If you want to run the sample in debug mode, you can save the output value.
diff --git a/keyvault/spring-cloud-azure-starter-keyvault-secrets/property-source/pom.xml b/keyvault/spring-cloud-azure-starter-keyvault-secrets/property-source/pom.xml
index ea09f88f3..1263a0671 100644
--- a/keyvault/spring-cloud-azure-starter-keyvault-secrets/property-source/pom.xml
+++ b/keyvault/spring-cloud-azure-starter-keyvault-secrets/property-source/pom.xml
@@ -11,7 +11,7 @@
../../../pom.xml
- spring-cloud-azure-starter-keyvault-secrets-sample-property-source
+ property-source
1.0.0
jar
diff --git a/keyvault/spring-cloud-azure-starter-keyvault-secrets/property-source/src/main/java/com/azure/spring/keyvault/secrets/sample/single/property/source/SampleApplication.java b/keyvault/spring-cloud-azure-starter-keyvault-secrets/property-source/src/main/java/com/azure/spring/keyvault/secrets/sample/single/property/source/PropertySourceApplication.java
similarity index 87%
rename from keyvault/spring-cloud-azure-starter-keyvault-secrets/property-source/src/main/java/com/azure/spring/keyvault/secrets/sample/single/property/source/SampleApplication.java
rename to keyvault/spring-cloud-azure-starter-keyvault-secrets/property-source/src/main/java/com/azure/spring/keyvault/secrets/sample/single/property/source/PropertySourceApplication.java
index 7c3a5ed54..d5a291fc5 100644
--- a/keyvault/spring-cloud-azure-starter-keyvault-secrets/property-source/src/main/java/com/azure/spring/keyvault/secrets/sample/single/property/source/SampleApplication.java
+++ b/keyvault/spring-cloud-azure-starter-keyvault-secrets/property-source/src/main/java/com/azure/spring/keyvault/secrets/sample/single/property/source/PropertySourceApplication.java
@@ -9,7 +9,7 @@
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
-public class SampleApplication implements CommandLineRunner {
+public class PropertySourceApplication implements CommandLineRunner {
@Value("${sampleProperty1}")
private String sampleProperty1;
@@ -19,7 +19,7 @@ public class SampleApplication implements CommandLineRunner {
private String samplePropertyInMultipleKeyVault;
public static void main(String[] args) {
- SpringApplication.run(SampleApplication.class, args);
+ SpringApplication.run(PropertySourceApplication.class, args);
}
public void run(String[] args) {
diff --git a/keyvault/spring-cloud-azure-starter-keyvault-secrets/secret-client/README.md b/keyvault/spring-cloud-azure-starter-keyvault-secrets/secret-client/README.md
index 67b4a11ad..ae7b01269 100644
--- a/keyvault/spring-cloud-azure-starter-keyvault-secrets/secret-client/README.md
+++ b/keyvault/spring-cloud-azure-starter-keyvault-secrets/secret-client/README.md
@@ -122,7 +122,7 @@ source ./terraform/setup_env.sh
#### Run with Powershell
```shell
-. terraform\setup_env.ps1
+terraform\setup_env.ps1
```
If you want to run the sample in debug mode, you can save the output value.
diff --git a/keyvault/spring-cloud-azure-starter-keyvault-secrets/secret-client/src/main/java/com/azure/spring/keyvault/secrets/sample/secret/client/SampleApplication.java b/keyvault/spring-cloud-azure-starter-keyvault-secrets/secret-client/src/main/java/com/azure/spring/keyvault/secrets/sample/secret/client/SecretClientApplication.java
similarity index 75%
rename from keyvault/spring-cloud-azure-starter-keyvault-secrets/secret-client/src/main/java/com/azure/spring/keyvault/secrets/sample/secret/client/SampleApplication.java
rename to keyvault/spring-cloud-azure-starter-keyvault-secrets/secret-client/src/main/java/com/azure/spring/keyvault/secrets/sample/secret/client/SecretClientApplication.java
index 63d769ed8..f0a4f276e 100644
--- a/keyvault/spring-cloud-azure-starter-keyvault-secrets/secret-client/src/main/java/com/azure/spring/keyvault/secrets/sample/secret/client/SampleApplication.java
+++ b/keyvault/spring-cloud-azure-starter-keyvault-secrets/secret-client/src/main/java/com/azure/spring/keyvault/secrets/sample/secret/client/SecretClientApplication.java
@@ -4,22 +4,21 @@
package com.azure.spring.keyvault.secrets.sample.secret.client;
import com.azure.security.keyvault.secrets.SecretClient;
-import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
-public class SampleApplication implements CommandLineRunner {
+public class SecretClientApplication implements CommandLineRunner {
private final SecretClient secretClient;
- public SampleApplication(SecretClient secretClient) {
+ public SecretClientApplication(SecretClient secretClient) {
this.secretClient = secretClient;
}
public static void main(String[] args) {
- SpringApplication.run(SampleApplication.class, args);
+ SpringApplication.run(SecretClientApplication.class, args);
}
@Override
diff --git a/pom.xml b/pom.xml
index 2919bec2b..0cad06798 100644
--- a/pom.xml
+++ b/pom.xml
@@ -27,6 +27,7 @@
2.5.0
2.4.0
3.14.0
+ exec
aad/spring-cloud-azure-starter-active-directory/web-client-access-resource-server
@@ -42,6 +43,7 @@
appconfiguration/azure-appconfiguration-refresh-sample
appconfiguration/feature-management-sample
appconfiguration/feature-management-web-sample
+ appconfiguration/spring-cloud-azure-starter-appconfiguration/appconfiguration-client
cache/spring-cloud-azure-starter/spring-cloud-azure-sample-cache
cloudfoundry/azure-cloud-foundry-service-sample
cosmos/spring-cloud-azure-starter-data-cosmos/spring-cloud-azure-data-cosmos-sample
@@ -50,6 +52,7 @@
cosmos/azure-spring-data-cosmos/cosmos-multi-database-single-account
eventhubs/spring-cloud-azure-starter-integration-eventhubs/eventhubs-integration
eventhubs/spring-cloud-azure-starter/spring-cloud-azure-sample-eventhubs-kafka
+ eventhubs/spring-cloud-azure-starter-eventhubs/eventhubs-client
eventhubs/spring-cloud-azure-stream-binder-eventhubs/eventhubs-binder
eventhubs/spring-cloud-azure-stream-binder-eventhubs/eventhubs-multibinders
keyvault/azure-securtiy-keyvault-jca/run-with-command-line-server-side
@@ -70,6 +73,8 @@
storage/spring-cloud-azure-starter-storage-file-share/storage-file-sample
storage/spring-cloud-azure-starter-integration-storage-queue/storage-queue-operation
storage/spring-cloud-azure-starter-integration-storage-queue/storage-queue-integration
+ storage/spring-cloud-azure-starter-storage-queue/storage-queue-client
+ spring-native/storage-blob-native
spring-petclinic-microservices
@@ -119,9 +124,37 @@
azure-spring-boot-starter-keyvault-certificates
${version.azure-spring-boot-starter-keyvault-certificates}
+
+ org.springframework.experimental
+ spring-native
+ ${spring-native.version}
+
+
+ com.azure.spring
+ spring-cloud-azure-native-configuration
+ ${spring-cloud-azure-native-configuration.version}
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+ ${repackage.classifier}
+
+ paketobuildpacks/builder:tiny
+
+ true
+
+
+
+
+
+
+
latest-sdk
@@ -279,5 +312,158 @@
+
+ buildpack
+
+ 11
+ 11
+ 0.11.4
+ 4.0.0-beta.1
+
+
+
+
+ org.springframework.experimental
+ spring-native
+ ${spring-native.version}
+
+
+ com.azure.spring
+ spring-cloud-azure-native-configuration
+ ${spring-cloud-azure-native-configuration.version}
+
+
+ org.junit.platform
+ junit-platform-launcher
+ test
+
+
+
+ ${project.artifactId}
+
+
+ org.springframework.experimental
+ spring-aot-maven-plugin
+ ${spring-native.version}
+
+
+ generate
+
+ generate
+
+
+
+ test-generate
+
+ test-generate
+
+
+
+
+
+
+
+
+ native
+
+ 11
+ 11
+ ${artifactId}
+ 0.9.11
+ 0.11.4
+ 4.0.0-beta.1
+
+
+
+
+ org.springframework.experimental
+ spring-native
+ ${spring-native.version}
+
+
+ com.azure.spring
+ spring-cloud-azure-native-configuration
+ ${spring-cloud-azure-native-configuration.version}
+
+
+ org.junit.platform
+ junit-platform-launcher
+ test
+
+
+
+
+
+ org.springframework.experimental
+ spring-aot-maven-plugin
+ ${spring-native.version}
+
+
+ generate
+
+ generate
+
+
+
+ test-generate
+
+ test-generate
+
+
+
+
+
+ org.graalvm.buildtools
+ native-maven-plugin
+ ${native.maven.plugin.version}
+ true
+
+
+ test-native
+ test
+
+ test
+
+
+
+ build-native
+ package
+
+ build
+
+
+
+
+ ${imageName}
+
+ -H:+ReportExceptionStackTraces
+
+
+
+
+
+
+
+
+
+ spring-release
+ Spring release
+ https://repo.spring.io/release
+
+ false
+
+
+
+
+
+
+ spring-release
+ Spring release
+ https://repo.spring.io/release
+
+ false
+
+
+
diff --git a/servicebus/spring-cloud-azure-starter-integration-servicebus/multiple-namespaces/README.md b/servicebus/spring-cloud-azure-starter-integration-servicebus/multiple-namespaces/README.md
index 73d0fb892..0c594b265 100644
--- a/servicebus/spring-cloud-azure-starter-integration-servicebus/multiple-namespaces/README.md
+++ b/servicebus/spring-cloud-azure-starter-integration-servicebus/multiple-namespaces/README.md
@@ -124,7 +124,7 @@ source ./terraform/setup_env.sh
#### Run with Powershell
```shell
-. terraform\setup_env.ps1
+terraform\setup_env.ps1
```
If you want to run the sample in debug mode, you can save the output value.
diff --git a/servicebus/spring-cloud-azure-starter-integration-servicebus/single-namespace/README.md b/servicebus/spring-cloud-azure-starter-integration-servicebus/single-namespace/README.md
index 66efc62b9..b837f08d4 100644
--- a/servicebus/spring-cloud-azure-starter-integration-servicebus/single-namespace/README.md
+++ b/servicebus/spring-cloud-azure-starter-integration-servicebus/single-namespace/README.md
@@ -131,7 +131,7 @@ source ./terraform/setup_env.sh
#### Run with Powershell
```shell
-. terraform\setup_env.ps1
+terraform\setup_env.ps1
```
If you want to run the sample in debug mode, you can save the output value.
diff --git a/servicebus/spring-cloud-azure-starter-servicebus-jms/servicebus-jms-queue/README.md b/servicebus/spring-cloud-azure-starter-servicebus-jms/servicebus-jms-queue/README.md
index 447cd81a3..980ca4c47 100644
--- a/servicebus/spring-cloud-azure-starter-servicebus-jms/servicebus-jms-queue/README.md
+++ b/servicebus/spring-cloud-azure-starter-servicebus-jms/servicebus-jms-queue/README.md
@@ -124,7 +124,7 @@ source ./terraform/setup_env.sh
#### Run with Powershell
```shell
-. terraform\setup_env.ps1
+terraform\setup_env.ps1
```
If you want to run the sample in debug mode, you can save the output value.
diff --git a/servicebus/spring-cloud-azure-starter-servicebus-jms/servicebus-jms-topic/README.md b/servicebus/spring-cloud-azure-starter-servicebus-jms/servicebus-jms-topic/README.md
index b5bb93124..141c7e272 100644
--- a/servicebus/spring-cloud-azure-starter-servicebus-jms/servicebus-jms-topic/README.md
+++ b/servicebus/spring-cloud-azure-starter-servicebus-jms/servicebus-jms-topic/README.md
@@ -124,7 +124,7 @@ source ./terraform/setup_env.sh
#### Run with Powershell
```shell
-. terraform\setup_env.ps1
+terraform\setup_env.ps1
```
If you want to run the sample in debug mode, you can save the output value.
diff --git a/servicebus/spring-cloud-azure-stream-binder-servicebus/servicebus-multibinders/README.md b/servicebus/spring-cloud-azure-stream-binder-servicebus/servicebus-multibinders/README.md
index 88ffbfa03..d9b3f6a75 100644
--- a/servicebus/spring-cloud-azure-stream-binder-servicebus/servicebus-multibinders/README.md
+++ b/servicebus/spring-cloud-azure-stream-binder-servicebus/servicebus-multibinders/README.md
@@ -134,7 +134,7 @@ source ./terraform/setup_env.sh
#### Run with Powershell
```shell
-. terraform\setup_env.ps1
+terraform\setup_env.ps1
```
If you want to run the sample in debug mode, you can save the output value.
diff --git a/servicebus/spring-cloud-azure-stream-binder-servicebus/servicebus-queue-binder-arm/README.md b/servicebus/spring-cloud-azure-stream-binder-servicebus/servicebus-queue-binder-arm/README.md
index 077c42704..f5ef8d3d6 100644
--- a/servicebus/spring-cloud-azure-stream-binder-servicebus/servicebus-queue-binder-arm/README.md
+++ b/servicebus/spring-cloud-azure-stream-binder-servicebus/servicebus-queue-binder-arm/README.md
@@ -138,7 +138,7 @@ source ./terraform/setup_env.sh
#### Run with Powershell
```shell
- . terraform\setup_env.ps1
+terraform\setup_env.ps1
```
If you want to run the sample in debug mode, you can save the output value.
diff --git a/servicebus/spring-cloud-azure-stream-binder-servicebus/servicebus-queue-binder/README.md b/servicebus/spring-cloud-azure-stream-binder-servicebus/servicebus-queue-binder/README.md
index 652d31d86..cb069b340 100644
--- a/servicebus/spring-cloud-azure-stream-binder-servicebus/servicebus-queue-binder/README.md
+++ b/servicebus/spring-cloud-azure-stream-binder-servicebus/servicebus-queue-binder/README.md
@@ -130,7 +130,7 @@ source ./terraform/setup_env.sh
#### Run with Powershell
```shell
-. terraform\setup_env.ps1
+terraform\setup_env.ps1
```
If you want to run the sample in debug mode, you can save the output value.
@@ -250,4 +250,4 @@ Service Bus binder supports consumer error channel, producer error channel and g
Users can get all the supported ServiceBus message headers [here](https://aka.ms/spring/docs/4.0.0#scs-sb-headers) to configure.
-[application-rm.yaml]: ./src/main/resources/application-rm.yaml
\ No newline at end of file
+[application-rm.yaml]: ./src/main/resources/application-rm.yaml
diff --git a/servicebus/spring-cloud-azure-stream-binder-servicebus/servicebus-topic-binder/README.md b/servicebus/spring-cloud-azure-stream-binder-servicebus/servicebus-topic-binder/README.md
index 1275e6668..92d15fdb7 100644
--- a/servicebus/spring-cloud-azure-stream-binder-servicebus/servicebus-topic-binder/README.md
+++ b/servicebus/spring-cloud-azure-stream-binder-servicebus/servicebus-topic-binder/README.md
@@ -132,7 +132,7 @@ source ./terraform/setup_env.sh
#### Run with Powershell
```shell
-. terraform\setup_env.ps1
+terraform\setup_env.ps1
```
If you want to run the sample in debug mode, you can save the output value.
@@ -249,4 +249,4 @@ Service Bus binder supports consumer error channel, producer error channel and g
Users can get all the supported ServiceBus message headers [here](https://aka.ms/spring/docs/4.0.0#scs-sb-headers) to configure.
-[application-rm.yaml]: ./src/main/resources/application-rm.yaml
\ No newline at end of file
+[application-rm.yaml]: ./src/main/resources/application-rm.yaml
diff --git a/spring-native/README.md b/spring-native/README.md
new file mode 100644
index 000000000..0325f8da9
--- /dev/null
+++ b/spring-native/README.md
@@ -0,0 +1 @@
+This folder contains all samples related to building native executables with Spring Cloud Azure libraries.
diff --git a/spring-native/storage-blob-native/README.md b/spring-native/storage-blob-native/README.md
new file mode 100644
index 000000000..733d20f8b
--- /dev/null
+++ b/spring-native/storage-blob-native/README.md
@@ -0,0 +1,242 @@
+# Using Spring Cloud Azure Storage Blob Starter
+
+This code sample demonstrates how to read and write files with the [Spring Resource](https://docs.spring.io/spring-framework/docs/current/reference/html/core.html#resources) abstraction for Azure Storage using the Spring Cloud Azure storage starter.
+
+## What You Will Build
+
+You will build an application that use Spring Resource abstraction to read and write data with [Azure Storage Blob](https://azure.microsoft.com/services/storage/blobs/).
+
+## What You Need
+
+- [An Azure subscription](https://azure.microsoft.com/free/)
+- [Terraform](https://www.terraform.io/)
+- [Azure CLI](https://docs.microsoft.com/cli/azure/install-azure-cli)
+- [GraalVM 22.0.0 - Java 11](https://www.graalvm.org/downloads/)
+- [Docker](https://docs.docker.com/installation/#installation) for [Buildpacks](https://docs.spring.io/spring-native/docs/current/reference/htmlsingle/#getting-started-buildpacks-system-requirements) usage
+- [Native Image](https://www.graalvm.org/22.0/reference-manual/native-image/) for [Native Build Tools](https://docs.spring.io/spring-native/docs/current/reference/htmlsingle/#getting-started-native-image-system-requirements) usage
+- Maven
+- You can also import the code straight into your IDE:
+ - [IntelliJ IDEA](https://www.jetbrains.com/idea/download)
+
+## Provision Azure Resources Required to Run This Sample
+This sample will create Azure resources using Terraform. If you choose to run it without using Terraform to provision resources, please pay attention to:
+> [!IMPORTANT]
+> If you choose to use a security principal to authenticate and authorize with Azure Active Directory for accessing an Azure resource
+> please refer to [Authorize access with Azure AD](https://microsoft.github.io/spring-cloud-azure/current/reference/html/index.html#authorize-access-with-azure-active-directory) to make sure the security principal has been granted the sufficient permission to access the Azure resource.
+
+### Authenticate Using the Azure CLI
+
+Terraform must authenticate to Azure to create infrastructure.
+
+In your terminal, use the Azure CLI tool to setup your account permissions locally.
+
+```shell
+az login
+```
+
+Your browser window will open and you will be prompted to enter your Azure login credentials. After successful authentication, your terminal will display your subscription information. You do not need to save this output as it is saved in your system for Terraform to use.
+
+```shell
+You have logged in. Now let us find all the subscriptions to which you have access...
+
+[
+ {
+ "cloudName": "AzureCloud",
+ "homeTenantId": "home-Tenant-Id",
+ "id": "subscription-id",
+ "isDefault": true,
+ "managedByTenants": [],
+ "name": "Subscription-Name",
+ "state": "Enabled",
+ "tenantId": "0envbwi39-TenantId",
+ "user": {
+ "name": "your-username@domain.com",
+ "type": "user"
+ }
+ }
+]
+```
+
+If you have more than one subscription, specify the subscription-id you want to use with command below:
+```shell
+az account set --subscription
+```
+
+### Provision the Resources
+
+After login Azure CLI with your account, now you can use the terraform script to create Azure Resources.
+
+#### Run with Bash
+
+```shell
+# In the root directory of the sample
+# Initialize your Terraform configuration
+terraform -chdir=./terraform init
+
+# Apply your Terraform Configuration
+terraform -chdir=./terraform apply -auto-approve
+
+```
+
+#### Run with Native Tools Command Prompt
+
+```shell
+# In the root directory of the sample
+# Initialize your Terraform configuration
+terraform -chdir=terraform init
+
+# Apply your Terraform Configuration
+terraform -chdir=terraform apply -auto-approve
+
+```
+
+It may take a few minutes to run the script. After successful running, you will see prompt information like below:
+
+```shell
+
+azurerm_resource_group.main: Creating...
+azurerm_resource_group.main: Creation complete after 3s ...
+azurerm_storage_account.application: Creating...
+azurerm_storage_account.application: Still creating... [10s elapsed]
+azurerm_storage_account.application: Creation complete after 39s ...
+azurerm_storage_container.application: Creating...
+azurerm_storage_container.application: Creation complete after 1s ...
+azurerm_role_assignment.storage_blob_contributor: Creating...
+azurerm_role_assignment.storage_blob_contributor: Still creating... [20s elapsed]
+azurerm_role_assignment.storage_blob_contributor: Creation complete after 26s...
+
+...
+Apply complete! Resources: 6 added, 0 changed, 0 destroyed.
+
+```
+
+You can go to [Azure portal](https://ms.portal.azure.com/) in your web browser to check the resources you created.
+
+### Export Output to Your Local Environment
+
+NOTE: If you are building a lightweight container containing a native executable, you can skip this section step.
+
+Running the command below to export environment values:
+
+#### Run with Bash
+
+```shell
+source ./terraform/setup_env.sh
+```
+
+#### Run with Native Tools Command Prompt
+
+```shell
+terraform\setup_env.bat
+```
+
+If you want to run the sample in debug mode, you can save the output value.
+
+```shell
+AZURE_STORAGE_ACCOUNT=...
+```
+
+## Run Locally
+
+### Run the sample based on Spring Native
+
+There are two main ways to build a Spring Boot native application.
+
+#### Run with Buildpacks
+
+- System Requirements
+
+Docker should be installed, see [System Requirements](https://docs.spring.io/spring-native/docs/current/reference/htmlsingle/#getting-started-buildpacks-system-requirements) for more details.
+
+- Build the native application
+
+NOTE: If you want to build a lightweight container containing a native executable, Please avoid using [DefaultAzureCredential](https://microsoft.github.io/spring-cloud-azure/current/reference/html/index.html#defaultazurecredential) for authentication first.
+
+Add the `spring.cloud.azure.storage.blob.account-key` configuration, and replace the relevant values in *application.yml* according to the saved output variable value. You can find these values in the temp file *terraform/terraform.tfstate*, or you can visit the Azure portal to get them.
+
+Run `mvn -Pbuildpack package spring-boot:build-image`, see [Build the native application](https://docs.spring.io/spring-native/docs/current/reference/htmlsingle/#_build_the_native_application) for more details.
+
+```shell
+mvn -Pbuildpack package spring-boot:build-image
+```
+
+- Run the native application
+
+Run `docker run --rm -p 8080:8080 storage-blob-native:1.0.0`, see [Run the native application](https://docs.spring.io/spring-native/docs/current/reference/htmlsingle/#_run_the_native_application) for more details.
+```shell
+docker run --rm -p 8080:8080 storage-blob-native:1.0.0
+```
+
+#### Run with Native Build Tools
+
+- System Requirements
+
+GraalVM `native-image` compiler should be installed, see [System Requirements](https://docs.spring.io/spring-native/docs/current/reference/htmlsingle/#getting-started-native-image-system-requirements) for more details. If using the Windows platform, you need to install `Visual Studio Build Tools`.
+
+- Build the native application
+
+Run `mvn -Pnative -DskipTests package` command using `x64 Native Tools Command Prompt`, see [Build the native application](https://docs.spring.io/spring-native/docs/current/reference/htmlsingle/#_build_the_native_application_2) for more details.
+
+```shell
+mvn -Pnative -DskipTests package
+```
+
+- Run the native application
+
+Run `target\storage-blob-native`, see [Run the native application](https://docs.spring.io/spring-native/docs/current/reference/htmlsingle/#_run_the_native_application_2) for more details.
+```shell
+target\storage-blob-native
+```
+
+## Verify This Sample
+
+1. Check out the following console log:
+
+ ```text
+ StorageApplication data initialization begin ...
+ write data to container=blobcontainer, filePath=azure-blob://blobcontainer/fileName-*.txt
+ Downloaded data from the azure storage blob resource: data-*
+ Uses can get the data content through this address 'curl -XGET http://localhost:8080/blob/fileName-*.txt'.
+ StorageApplication data initialization end ...
+ ```
+
+2. [Optional] Write and read a file.
+ 2.1 Send a POST request to update file contents.
+
+ ```shell
+ curl http://localhost:8080/blob/file1.txt -d "new message" -H "Content-Type: text/plain"
+ ```
+
+ 2.2 Verify by sending a GET request.
+ ```shell
+ curl -XGET http://localhost:8080/blob/file1.txt
+ ```
+
+3. [Optional] Using AzureStorageBlobProtocolResolver to get Azure Storage Blob resources with file pattern.
+ ```shell
+ curl -XGET http://localhost:8080/blob
+ ```
+
+ Verify in app's log that a similar messages was posted:
+ ```shell
+ 1 resources founded with pattern:*.txt
+ ```
+
+
+## Clean Up Resources
+After running the sample, if you don't want to run the sample, remember to destroy the Azure resources you created to avoid unnecessary billing.
+
+The terraform destroy command terminates resources managed by your Terraform project.
+To destroy the resources you created.
+
+#### Run with Bash
+
+```shell
+terraform -chdir=./terraform destroy -auto-approve
+```
+
+#### Run with Native Tools Command Prompt
+
+```shell
+terraform -chdir=terraform destroy -auto-approve
+```
diff --git a/spring-native/storage-blob-native/pom.xml b/spring-native/storage-blob-native/pom.xml
new file mode 100644
index 000000000..5e7b6c783
--- /dev/null
+++ b/spring-native/storage-blob-native/pom.xml
@@ -0,0 +1,35 @@
+
+
+ 4.0.0
+
+
+ com.azure.spring
+ azure-spring-boot-samples
+ 1.0.0
+ ../../pom.xml
+
+
+ storage-blob-native
+ 1.0.0
+ jar
+
+ Read and Write Blobs with the Spring Resource for Azure Storage Blob
+ The Spring Native support has been enabled for this module by default.
+
+
+ storage-blob
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+ com.azure.spring
+ spring-cloud-azure-starter-storage-blob
+
+
+
diff --git a/spring-native/storage-blob-native/src/main/java/com/azure/spring/nativex/sample/storage/blob/BlobController.java b/spring-native/storage-blob-native/src/main/java/com/azure/spring/nativex/sample/storage/blob/BlobController.java
new file mode 100644
index 000000000..bedc7399c
--- /dev/null
+++ b/spring-native/storage-blob-native/src/main/java/com/azure/spring/nativex/sample/storage/blob/BlobController.java
@@ -0,0 +1,78 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+
+package com.azure.spring.nativex.sample.storage.blob;
+
+import com.azure.spring.cloud.core.resource.AzureStorageBlobProtocolResolver;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.core.io.Resource;
+import org.springframework.core.io.ResourceLoader;
+import org.springframework.core.io.WritableResource;
+import org.springframework.util.StreamUtils;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.io.IOException;
+import java.io.OutputStream;
+import java.nio.charset.Charset;
+import java.util.List;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
+/**
+ *
+ */
+@RestController
+@RequestMapping("blob")
+public class BlobController {
+
+ final static Logger logger = LoggerFactory.getLogger(BlobController.class);
+ private final String containerName;
+ private final ResourceLoader resourceLoader;
+ private final AzureStorageBlobProtocolResolver azureStorageBlobProtocolResolver;
+
+ public BlobController(@Value("${spring.cloud.azure.storage.blob.container-name}") String containerName,
+ ResourceLoader resourceLoader,
+ AzureStorageBlobProtocolResolver patternResolver) {
+ this.containerName = containerName;
+ this.resourceLoader = resourceLoader;
+ this.azureStorageBlobProtocolResolver = patternResolver;
+ }
+
+ /**
+ * Using AzureStorageBlobProtocolResolver to get Azure Storage Blob resources with file pattern.
+ *
+ * @return fileNames in the container match pattern: *.txt
+ */
+ @GetMapping
+ public List listTxtFiles() throws IOException {
+ Resource[] resources = azureStorageBlobProtocolResolver.getResources("azure-blob://" + containerName + "/*.txt");
+ logger.info("{} resources founded with pattern:*.txt",resources.length);
+ return Stream.of(resources).map(Resource::getFilename).collect(Collectors.toList());
+ }
+
+ @GetMapping("/{fileName}")
+ public String readBlobResource(@PathVariable("fileName") String fileName) throws IOException {
+ // get a BlobResource
+ Resource storageBlobResource = resourceLoader.getResource("azure-blob://" + containerName + "/" + fileName);
+ return StreamUtils.copyToString(
+ storageBlobResource.getInputStream(),
+ Charset.defaultCharset());
+ }
+
+ @PostMapping("/{fileName}")
+ public String writeBlobResource(@PathVariable("fileName") String fileName, @RequestBody String data) throws IOException {
+ // get a BlobResource
+ Resource storageBlobResource = resourceLoader.getResource("azure-blob://" + containerName + "/" + fileName);
+ try (OutputStream os = ((WritableResource) storageBlobResource).getOutputStream()) {
+ os.write(data.getBytes());
+ }
+ return "blob was updated";
+ }
+}
diff --git a/spring-native/storage-blob-native/src/main/java/com/azure/spring/nativex/sample/storage/blob/SampleDataInitializer.java b/spring-native/storage-blob-native/src/main/java/com/azure/spring/nativex/sample/storage/blob/SampleDataInitializer.java
new file mode 100644
index 000000000..1be4be8d7
--- /dev/null
+++ b/spring-native/storage-blob-native/src/main/java/com/azure/spring/nativex/sample/storage/blob/SampleDataInitializer.java
@@ -0,0 +1,52 @@
+package com.azure.spring.nativex.sample.storage.blob;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.boot.CommandLineRunner;
+import org.springframework.core.io.Resource;
+import org.springframework.core.io.ResourceLoader;
+import org.springframework.core.io.WritableResource;
+import org.springframework.stereotype.Component;
+import org.springframework.util.StreamUtils;
+
+import java.io.OutputStream;
+import java.nio.charset.Charset;
+
+@Component
+public class SampleDataInitializer implements CommandLineRunner {
+ final static Logger logger = LoggerFactory.getLogger(SampleDataInitializer.class);
+
+ private final ResourceLoader resourceLoader;
+
+ private final String containerName;
+
+ public SampleDataInitializer(@Value("${spring.cloud.azure.storage.blob.container-name}") String containerName,
+ ResourceLoader resourceLoader) {
+ this.containerName = containerName;
+ this.resourceLoader = resourceLoader;
+ }
+
+ /**
+ * This is used to initialize some data in Azure Storage Blob.
+ */
+ @Override
+ public void run(String... args) throws Exception {
+ logger.info("StorageApplication data initialization begin ...");
+ long millis = System.currentTimeMillis();
+ String fileName = "fileName-" + millis + ".txt";
+ String filePath = "azure-blob://" + containerName + "/" + fileName;
+ Resource storageBlobResource = resourceLoader.getResource(filePath);
+ try (OutputStream os = ((WritableResource) storageBlobResource).getOutputStream()) {
+ String data = "data-" + millis;
+ os.write(data.getBytes());
+ logger.info("write data to container={}, filePath={}", containerName, filePath);
+ }
+ String downloadedData = StreamUtils.copyToString(resourceLoader.getResource(filePath).getInputStream(),
+ Charset.defaultCharset());
+ logger.info("Downloaded data from the azure storage blob resource: {}", downloadedData);
+ logger.info("Uses can get the data content through this address 'curl -XGET http://localhost:8080/blob/{}'.",
+ fileName);
+ logger.info("StorageApplication data initialization end ...");
+ }
+}
diff --git a/spring-native/storage-blob-native/src/main/java/com/azure/spring/nativex/sample/storage/blob/StorageBlobNativeApplication.java b/spring-native/storage-blob-native/src/main/java/com/azure/spring/nativex/sample/storage/blob/StorageBlobNativeApplication.java
new file mode 100644
index 000000000..73049373e
--- /dev/null
+++ b/spring-native/storage-blob-native/src/main/java/com/azure/spring/nativex/sample/storage/blob/StorageBlobNativeApplication.java
@@ -0,0 +1,17 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+
+package com.azure.spring.nativex.sample.storage.blob;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+/**
+ *
+ */
+@SpringBootApplication
+public class StorageBlobNativeApplication {
+ public static void main(String[] args) {
+ SpringApplication.run(StorageBlobNativeApplication.class, args);
+ }
+}
diff --git a/spring-native/storage-blob-native/src/main/resources/application.yml b/spring-native/storage-blob-native/src/main/resources/application.yml
new file mode 100644
index 000000000..f99c731e6
--- /dev/null
+++ b/spring-native/storage-blob-native/src/main/resources/application.yml
@@ -0,0 +1,9 @@
+spring:
+ cloud:
+ azure:
+ storage:
+ blob:
+ account-name: ${AZURE_STORAGE_ACCOUNT}
+ container-name: blobcontainer
+# Uncomment the account-key when building native image with the Buildpacks.
+# account-key:
diff --git a/spring-native/storage-blob-native/terraform/main.tf b/spring-native/storage-blob-native/terraform/main.tf
new file mode 100644
index 000000000..18b8bf85a
--- /dev/null
+++ b/spring-native/storage-blob-native/terraform/main.tf
@@ -0,0 +1,72 @@
+terraform {
+ required_providers {
+ azurerm = {
+ source = "hashicorp/azurerm"
+ version = "2.99"
+ }
+ azurecaf = {
+ source = "aztfmod/azurecaf"
+ version = "1.2.16"
+ }
+ }
+}
+
+provider "azurerm" {
+ features {}
+}
+
+resource "azurecaf_name" "resource_group" {
+ name = var.application_name
+ resource_type = "azurerm_resource_group"
+ random_length = 5
+ clean_input = true
+}
+
+resource "azurerm_resource_group" "main" {
+ name = azurecaf_name.resource_group.result
+ location = var.location
+
+ tags = {
+ "spring-cloud-azure-sample" = var.sample_tag_value
+ "terraform" = "true"
+ "application-name" = var.application_name
+ }
+}
+
+# =================== storage ================
+resource "azurecaf_name" "storage_account" {
+ name = var.application_name
+ resource_type = "azurerm_storage_account"
+ random_length = 5
+ clean_input = true
+}
+
+resource "azurerm_storage_account" "application" {
+ name = azurecaf_name.storage_account.result
+ resource_group_name = azurerm_resource_group.main.name
+ location = var.location
+ account_tier = "Standard"
+ account_replication_type = "LRS"
+ allow_blob_public_access = true
+
+ tags = {
+ "spring-cloud-azure-sample" = var.sample_tag_value
+ "terraform" = "true"
+ "application-name" = var.application_name
+ }
+}
+
+data "azurerm_client_config" "current" {
+}
+
+resource "azurerm_storage_container" "application" {
+ name = var.container_name
+ storage_account_name = azurerm_storage_account.application.name
+ container_access_type = "container"
+}
+
+resource "azurerm_role_assignment" "role_storage_blob_data_contributor" {
+ scope = azurerm_storage_container.application.resource_manager_id
+ role_definition_name = "Storage Blob Data Contributor"
+ principal_id = data.azurerm_client_config.current.object_id
+}
diff --git a/spring-native/storage-blob-native/terraform/outputs.tf b/spring-native/storage-blob-native/terraform/outputs.tf
new file mode 100644
index 000000000..ab36b4143
--- /dev/null
+++ b/spring-native/storage-blob-native/terraform/outputs.tf
@@ -0,0 +1,20 @@
+output "azure_storage_account" {
+ value = azurerm_storage_account.application.name
+ description = "Azure Storage account created."
+}
+
+output "azure_storage_account_key" {
+ value = azurerm_storage_account.application.primary_access_key
+ sensitive = true
+ description = "Azure Storage account access key."
+}
+
+output "storage_container_name" {
+ value = var.container_name
+ description = "Azure Storage container name."
+}
+
+output "resource_group_name" {
+ value = azurerm_resource_group.main.name
+ description = "The resource group name."
+}
diff --git a/spring-native/storage-blob-native/terraform/setup_env.bat b/spring-native/storage-blob-native/terraform/setup_env.bat
new file mode 100644
index 000000000..254666371
--- /dev/null
+++ b/spring-native/storage-blob-native/terraform/setup_env.bat
@@ -0,0 +1,2 @@
+for /f %%i in ('terraform -chdir^=./terraform output -raw azure_storage_account') do set AZURE_STORAGE_ACCOUNT=%%i
+echo AZURE_STORAGE_ACCOUNT=%AZURE_STORAGE_ACCOUNT%
diff --git a/spring-native/storage-blob-native/terraform/setup_env.sh b/spring-native/storage-blob-native/terraform/setup_env.sh
new file mode 100644
index 000000000..c18e0b01a
--- /dev/null
+++ b/spring-native/storage-blob-native/terraform/setup_env.sh
@@ -0,0 +1,2 @@
+export AZURE_STORAGE_ACCOUNT=$(terraform -chdir=./terraform output -raw azure_storage_account)
+echo AZURE_STORAGE_ACCOUNT=$AZURE_STORAGE_ACCOUNT
diff --git a/spring-native/storage-blob-native/terraform/variables.tf b/spring-native/storage-blob-native/terraform/variables.tf
new file mode 100644
index 000000000..4d3ae60a5
--- /dev/null
+++ b/spring-native/storage-blob-native/terraform/variables.tf
@@ -0,0 +1,23 @@
+variable "application_name" {
+ type = string
+ description = "The name of your application."
+ default = "storage-blob-native"
+}
+
+variable "location" {
+ type = string
+ description = "The Azure region where all resources in this example should be created."
+ default = "eastus"
+}
+
+variable "container_name" {
+ type = string
+ description = "The container name of the blob storage."
+ default = "blobcontainer"
+}
+
+variable "sample_tag_value" {
+ type = string
+ description = "The value of spring-cloud-azure-sample tag."
+ default = "true"
+}
diff --git a/spring-petclinic-microservices/README.md b/spring-petclinic-microservices/README.md
index aaff69953..dfb964828 100644
--- a/spring-petclinic-microservices/README.md
+++ b/spring-petclinic-microservices/README.md
@@ -155,7 +155,7 @@ source ./terraform/setup_env.sh
Running the command below to export environment values:
```shell
-. terraform\setup_env.ps1
+terraform\setup_env.ps1
```
make sure keyvault.env file is created at the root of the repo.
diff --git a/storage/spring-cloud-azure-starter-integration-storage-queue/storage-queue-integration/README.md b/storage/spring-cloud-azure-starter-integration-storage-queue/storage-queue-integration/README.md
index 98818e634..4f02ba07e 100644
--- a/storage/spring-cloud-azure-starter-integration-storage-queue/storage-queue-integration/README.md
+++ b/storage/spring-cloud-azure-starter-integration-storage-queue/storage-queue-integration/README.md
@@ -122,7 +122,7 @@ source ./terraform/setup_env.sh
#### Run with Powershell
```shell
-. terraform\setup_env.ps1
+terraform\setup_env.ps1
```
If you want to run the sample in debug mode, you can save the output value.
diff --git a/storage/spring-cloud-azure-starter-integration-storage-queue/storage-queue-integration/pom.xml b/storage/spring-cloud-azure-starter-integration-storage-queue/storage-queue-integration/pom.xml
index 1a90405ec..69ae4557e 100644
--- a/storage/spring-cloud-azure-starter-integration-storage-queue/storage-queue-integration/pom.xml
+++ b/storage/spring-cloud-azure-starter-integration-storage-queue/storage-queue-integration/pom.xml
@@ -26,19 +26,5 @@
com.azure.spring
spring-cloud-azure-starter-integration-storage-queue
-
- org.springframework.boot
- spring-boot-starter-actuator
-
-
- org.springframework.boot
- spring-boot-starter-logging
-
-
- org.hibernate.validator
- hibernate-validator
-
-
-
diff --git a/storage/spring-cloud-azure-starter-integration-storage-queue/storage-queue-operation/README.md b/storage/spring-cloud-azure-starter-integration-storage-queue/storage-queue-operation/README.md
index ee024ce26..54f33624c 100644
--- a/storage/spring-cloud-azure-starter-integration-storage-queue/storage-queue-operation/README.md
+++ b/storage/spring-cloud-azure-starter-integration-storage-queue/storage-queue-operation/README.md
@@ -3,6 +3,7 @@
This code sample demonstrates how to use [Storage Queue Operation][storage-queue-operation].
## What You Will Build
+
You will build an application using [Storage Queue Operation][storage-queue-operation] to send and receive messages.
## What You Need
@@ -125,7 +126,7 @@ source ./terraform/setup_env.sh
#### Run with Powershell
```shell
-. terraform\setup_env.ps1
+terraform\setup_env.ps1
```
If you want to run the sample in debug mode, you can save the output value.
diff --git a/storage/spring-cloud-azure-starter-integration-storage-queue/storage-queue-operation/pom.xml b/storage/spring-cloud-azure-starter-integration-storage-queue/storage-queue-operation/pom.xml
index fa6e5b995..62d7105ff 100644
--- a/storage/spring-cloud-azure-starter-integration-storage-queue/storage-queue-operation/pom.xml
+++ b/storage/spring-cloud-azure-starter-integration-storage-queue/storage-queue-operation/pom.xml
@@ -25,25 +25,5 @@
com.azure.spring
spring-cloud-azure-starter-integration-storage-queue
-
- org.springframework.boot
- spring-boot-starter-logging
-
-
- org.hibernate.validator
- hibernate-validator
-
-
-
-
-
-
-
- org.springframework.boot
- spring-boot-maven-plugin
-
-
-
-
diff --git a/storage/spring-cloud-azure-starter-integration-storage-queue/storage-queue-operation/src/main/resources/application.yaml b/storage/spring-cloud-azure-starter-integration-storage-queue/storage-queue-operation/src/main/resources/application.yaml
index f6d203873..a68db44f8 100644
--- a/storage/spring-cloud-azure-starter-integration-storage-queue/storage-queue-operation/src/main/resources/application.yaml
+++ b/storage/spring-cloud-azure-starter-integration-storage-queue/storage-queue-operation/src/main/resources/application.yaml
@@ -3,4 +3,4 @@ spring:
azure:
storage:
queue:
- account-name: ${ACCOUNT_NAME}
\ No newline at end of file
+ account-name: ${ACCOUNT_NAME}
diff --git a/storage/spring-cloud-azure-starter-storage-blob/storage-blob-sample/README.md b/storage/spring-cloud-azure-starter-storage-blob/storage-blob-sample/README.md
index ffb2ec503..84fd31fa8 100644
--- a/storage/spring-cloud-azure-starter-storage-blob/storage-blob-sample/README.md
+++ b/storage/spring-cloud-azure-starter-storage-blob/storage-blob-sample/README.md
@@ -120,7 +120,7 @@ source ./terraform/setup_env.sh
#### Run with Powershell
```shell
-. terraform\setup_env.ps1
+terraform\setup_env.ps1
```
If you want to run the sample in debug mode, you can save the output value.
diff --git a/storage/spring-cloud-azure-starter-storage-blob/storage-blob-sample/src/main/java/com/azure/spring/sample/storage/resource/StorageApplication.java b/storage/spring-cloud-azure-starter-storage-blob/storage-blob-sample/src/main/java/com/azure/spring/sample/storage/resource/StorageBlobApplication.java
similarity index 78%
rename from storage/spring-cloud-azure-starter-storage-blob/storage-blob-sample/src/main/java/com/azure/spring/sample/storage/resource/StorageApplication.java
rename to storage/spring-cloud-azure-starter-storage-blob/storage-blob-sample/src/main/java/com/azure/spring/sample/storage/resource/StorageBlobApplication.java
index 6a3ec64d3..99bd7d5e7 100644
--- a/storage/spring-cloud-azure-starter-storage-blob/storage-blob-sample/src/main/java/com/azure/spring/sample/storage/resource/StorageApplication.java
+++ b/storage/spring-cloud-azure-starter-storage-blob/storage-blob-sample/src/main/java/com/azure/spring/sample/storage/resource/StorageBlobApplication.java
@@ -10,8 +10,8 @@
* @author Warren Zhu
*/
@SpringBootApplication
-public class StorageApplication {
+public class StorageBlobApplication {
public static void main(String[] args) {
- SpringApplication.run(StorageApplication.class, args);
+ SpringApplication.run(StorageBlobApplication.class, args);
}
}
diff --git a/storage/spring-cloud-azure-starter-storage-file-share/storage-file-sample/README.adoc b/storage/spring-cloud-azure-starter-storage-file-share/storage-file-sample/README.adoc
index 56d436ee3..11ae6c0ed 100644
--- a/storage/spring-cloud-azure-starter-storage-file-share/storage-file-sample/README.adoc
+++ b/storage/spring-cloud-azure-starter-storage-file-share/storage-file-sample/README.adoc
@@ -62,7 +62,7 @@ resource:
....
=== How to run
-1. Start the `StorageApplication` Spring Boot app.
+1. Start the `StorageFileShareApplication` Spring Boot app.
+
```
mvn spring-boot:run
diff --git a/storage/spring-cloud-azure-starter-storage-file-share/storage-file-sample/pom.xml b/storage/spring-cloud-azure-starter-storage-file-share/storage-file-sample/pom.xml
index b11f0d9ab..28a767690 100644
--- a/storage/spring-cloud-azure-starter-storage-file-share/storage-file-sample/pom.xml
+++ b/storage/spring-cloud-azure-starter-storage-file-share/storage-file-sample/pom.xml
@@ -22,21 +22,9 @@
com.azure.spring
spring-cloud-azure-starter-storage-file-share
-
- org.springframework.boot
- spring-boot-starter
-
org.springframework.boot
spring-boot-starter-web
-
- org.springframework.boot
- spring-boot-starter-logging
-
-
- org.springframework.boot
- spring-boot-starter-actuator
-
diff --git a/storage/spring-cloud-azure-starter-storage-file-share/storage-file-sample/src/main/java/com/azure/spring/sample/storage/resource/StorageApplication.java b/storage/spring-cloud-azure-starter-storage-file-share/storage-file-sample/src/main/java/com/azure/spring/sample/storage/resource/StorageFileShareApplication.java
similarity index 76%
rename from storage/spring-cloud-azure-starter-storage-file-share/storage-file-sample/src/main/java/com/azure/spring/sample/storage/resource/StorageApplication.java
rename to storage/spring-cloud-azure-starter-storage-file-share/storage-file-sample/src/main/java/com/azure/spring/sample/storage/resource/StorageFileShareApplication.java
index 3f0421bf8..721c8fc48 100644
--- a/storage/spring-cloud-azure-starter-storage-file-share/storage-file-sample/src/main/java/com/azure/spring/sample/storage/resource/StorageApplication.java
+++ b/storage/spring-cloud-azure-starter-storage-file-share/storage-file-sample/src/main/java/com/azure/spring/sample/storage/resource/StorageFileShareApplication.java
@@ -10,9 +10,9 @@
* @author Warren Zhu
*/
@SpringBootApplication
-public class StorageApplication {
+public class StorageFileShareApplication {
public static void main(String[] args) {
- SpringApplication.run(StorageApplication.class, args);
+ SpringApplication.run(StorageFileShareApplication.class, args);
}
}
diff --git a/storage/spring-cloud-azure-starter-storage-queue/storage-queue-client/README.md b/storage/spring-cloud-azure-starter-storage-queue/storage-queue-client/README.md
new file mode 100644
index 000000000..13293e5a9
--- /dev/null
+++ b/storage/spring-cloud-azure-starter-storage-queue/storage-queue-client/README.md
@@ -0,0 +1,180 @@
+# Spring Cloud Azure Storage Queue Operation Code Sample
+
+This code sample demonstrates how to use [Storage Queue Operation][storage-queue-operation].
+
+## What You Will Build
+You will build an application using [Storage Queue Operation][storage-queue-operation] to send and receive messages.
+
+## What You Need
+
+- [An Azure subscription](https://azure.microsoft.com/free/)
+- [Terraform](https://www.terraform.io/)
+- [Azure CLI](https://docs.microsoft.com/cli/azure/install-azure-cli)
+- [JDK8](https://www.oracle.com/java/technologies/downloads/) or later
+- Maven
+- You can also import the code straight into your IDE:
+ - [IntelliJ IDEA](https://www.jetbrains.com/idea/download)
+
+## Provision Azure Resources Required to Run This Sample
+This sample will create Azure resources using Terraform. If you choose to run it without using Terraform to provision resources, please pay attention to:
+> [!IMPORTANT]
+> If you choose to use a security principal to authenticate and authorize with Azure Active Directory for accessing an Azure resource
+> please refer to [Authorize access with Azure AD](https://microsoft.github.io/spring-cloud-azure/current/reference/html/index.html#authorize-access-with-azure-active-directory) to make sure the security principal has been granted the sufficient permission to access the Azure resource.
+
+### Authenticate Using the Azure CLI
+Terraform must authenticate to Azure to create infrastructure.
+
+In your terminal, use the Azure CLI tool to setup your account permissions locally.
+
+```shell
+az login
+```
+
+Your browser window will open and you will be prompted to enter your Azure login credentials. After successful authentication, your terminal will display your subscription information. You do not need to save this output as it is saved in your system for Terraform to use.
+
+```shell
+You have logged in. Now let us find all the subscriptions to which you have access...
+
+[
+ {
+ "cloudName": "AzureCloud",
+ "homeTenantId": "home-Tenant-Id",
+ "id": "subscription-id",
+ "isDefault": true,
+ "managedByTenants": [],
+ "name": "Subscription-Name",
+ "state": "Enabled",
+ "tenantId": "0envbwi39-TenantId",
+ "user": {
+ "name": "your-username@domain.com",
+ "type": "user"
+ }
+ }
+]
+```
+
+If you have more than one subscription, specify the subscription-id you want to use with command below:
+```shell
+az account set --subscription
+```
+
+### Provision the Resources
+
+After login Azure CLI with your account, now you can use the terraform script to create Azure Resources.
+
+#### Run with Bash
+
+```shell
+# In the root directory of the sample
+# Initialize your Terraform configuration
+terraform -chdir=./terraform init
+
+# Apply your Terraform Configuration
+terraform -chdir=./terraform apply -auto-approve
+
+```
+
+#### Run with Powershell
+
+```shell
+# In the root directory of the sample
+# Initialize your Terraform configuration
+terraform -chdir=terraform init
+
+# Apply your Terraform Configuration
+terraform -chdir=terraform apply -auto-approve
+
+```
+
+It may take a few minutes to run the script. After successful running, you will see prompt information like below:
+
+```shell
+
+azurecaf_name.resource_group: Creating...
+azurecaf_name.azurecaf_name_storage_account: Creating...
+azurecaf_name.resource_group: Creation complete after 0s
+azurecaf_name.azurecaf_name_storage_account: Creation complete after 0s
+azurerm_resource_group.main: Creating...
+...
+azurerm_storage_account.storage_account: Creating...
+azurerm_storage_account.storage_account: Still creating... [10s elapsed]
+azurerm_storage_account.storage_account: Still creating... [20s elapsed]
+azurerm_storage_account.storage_account: Still creating... [30s elapsed]
+azurerm_storage_account.storage_account: Creation complete after 34s
+azurerm_role_assignment.role_storage_queue_data_contributor: Creating...
+azurerm_role_assignment.role_storage_queue_data_contributor: Still creating... [10s elapsed]
+azurerm_role_assignment.role_storage_queue_data_contributor: Still creating... [20s elapsed]
+azurerm_role_assignment.role_storage_queue_data_contributor: Creation complete after 30s
+
+Apply complete! Resources: 5 added, 0 changed, 0 destroyed.
+
+Outputs:
+
+...
+
+```
+
+You can go to [Azure portal](https://ms.portal.azure.com/) in your web browser to check the resources you created.
+
+### Export Output to Your Local Environment
+Running the command below to export environment values:
+
+#### Run with Bash
+
+```shell
+source ./terraform/setup_env.sh
+```
+
+#### Run with Powershell
+
+```shell
+terraform\setup_env.ps1
+```
+
+## Run Locally
+
+### Run the sample with Maven
+
+In your terminal, run `mvn clean spring-boot:run`.
+
+```shell
+mvn clean spring-boot:run
+```
+
+### Run the sample in IDEs
+
+You can debug your sample by adding the saved output values to the tool's environment variables or the sample's `application.yaml` file.
+
+* If your tool is `IDEA`, please refer to [Debug your first Java application](https://www.jetbrains.com/help/idea/debugging-your-first-java-application.html) and [add environment variables](https://www.jetbrains.com/help/objc/add-environment-variables-and-program-arguments.html#add-environment-variables).
+
+* If your tool is `ECLIPSE`, please refer to [Debugging the Eclipse IDE for Java Developers](https://www.eclipse.org/community/eclipse_newsletter/2017/june/article1.php) and [Eclipse Environment Variable Setup](https://examples.javacodegeeks.com/desktop-java/ide/eclipse/eclipse-environment-variable-setup-example/).
+
+## Verify This Sample
+View the below results in the console.
+
+```text
+INFO 17464 --- [ main] c.a.s.s.s.queue.StorageQueueApplication : Send message id: xxx
+INFO 17464 --- [ main] c.a.s.s.s.queue.StorageQueueApplication : Received message: test
+```
+
+
+## Clean Up Resources
+After running the sample, if you don't want to run the sample, remember to destroy the Azure resources you created to avoid unnecessary billing.
+
+The terraform destroy command terminates resources managed by your Terraform project.
+To destroy the resources you created.
+
+#### Run with Bash
+
+```shell
+terraform -chdir=./terraform destroy -auto-approve
+```
+
+#### Run with Powershell
+
+```shell
+terraform -chdir=terraform destroy -auto-approve
+```
+
+
+[storage-queue-operation]: https://github.com/Azure/azure-sdk-for-java/blob/azure-spring-boot_3.6.0/sdk/spring/azure-spring-integration-storage-queue/src/main/java/com/azure/spring/integration/storage/queue/StorageQueueOperation.java
diff --git a/storage/spring-cloud-azure-starter-storage-queue/storage-queue-client/pom.xml b/storage/spring-cloud-azure-starter-storage-queue/storage-queue-client/pom.xml
new file mode 100644
index 000000000..6a9579716
--- /dev/null
+++ b/storage/spring-cloud-azure-starter-storage-queue/storage-queue-client/pom.xml
@@ -0,0 +1,25 @@
+
+
+ 4.0.0
+
+
+ com.azure.spring
+ azure-spring-boot-samples
+ 1.0.0
+ ../../../pom.xml
+
+
+ storage-queue-client
+ 1.0.0
+ jar
+ Send and receive message with Storage Queue
+
+
+
+ com.azure.spring
+ spring-cloud-azure-starter-storage-queue
+
+
+
diff --git a/storage/spring-cloud-azure-starter-storage-queue/storage-queue-client/src/main/java/com/azure/spring/sample/storage/queue/StorageQueueClientApplication.java b/storage/spring-cloud-azure-starter-storage-queue/storage-queue-client/src/main/java/com/azure/spring/sample/storage/queue/StorageQueueClientApplication.java
new file mode 100644
index 000000000..02c967906
--- /dev/null
+++ b/storage/spring-cloud-azure-starter-storage-queue/storage-queue-client/src/main/java/com/azure/spring/sample/storage/queue/StorageQueueClientApplication.java
@@ -0,0 +1,40 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+
+package com.azure.spring.sample.storage.queue;
+
+import com.azure.storage.queue.QueueClient;
+import com.azure.storage.queue.models.QueueMessageItem;
+import com.azure.storage.queue.models.SendMessageResult;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.CommandLineRunner;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+/**
+ * Send and receive message using Storage Queue SDK client.
+ */
+@SpringBootApplication
+public class StorageQueueClientApplication implements CommandLineRunner {
+
+ final static Logger logger = LoggerFactory.getLogger(StorageQueueClientApplication.class);
+
+ @Autowired
+ private QueueClient queueClient;
+
+ public static void main(String[] args) {
+ SpringApplication.run(StorageQueueClientApplication.class, args);
+ }
+
+ @Override
+ public void run(String... args) throws Exception {
+ queueClient.create();
+ SendMessageResult sendMessageResult = queueClient.sendMessage("test");
+ logger.info("Send message id: {}", sendMessageResult.getMessageId());
+
+ QueueMessageItem queueMessageItem = queueClient.receiveMessage();
+ logger.info("Received message: {}", new String(queueMessageItem.getBody().toBytes()));
+ }
+}
diff --git a/storage/spring-cloud-azure-starter-storage-queue/storage-queue-client/src/main/resources/application.yaml b/storage/spring-cloud-azure-starter-storage-queue/storage-queue-client/src/main/resources/application.yaml
new file mode 100644
index 000000000..1e7e3fa6f
--- /dev/null
+++ b/storage/spring-cloud-azure-starter-storage-queue/storage-queue-client/src/main/resources/application.yaml
@@ -0,0 +1,7 @@
+spring:
+ cloud:
+ azure:
+ storage:
+ queue:
+ account-name: ${STORAGE_QUEUE_ACCOUNT_NAME}
+ queue-name: test
diff --git a/storage/spring-cloud-azure-starter-storage-queue/storage-queue-client/terraform/main.tf b/storage/spring-cloud-azure-starter-storage-queue/storage-queue-client/terraform/main.tf
new file mode 100644
index 000000000..722981597
--- /dev/null
+++ b/storage/spring-cloud-azure-starter-storage-queue/storage-queue-client/terraform/main.tf
@@ -0,0 +1,68 @@
+terraform {
+ required_providers {
+ azurerm = {
+ source = "hashicorp/azurerm"
+ version = "2.99"
+ }
+ azurecaf = {
+ source = "aztfmod/azurecaf"
+ version = "1.2.16"
+ }
+ }
+}
+
+provider "azurerm" {
+ features {}
+}
+
+resource "azurecaf_name" "resource_group" {
+ name = var.application_name
+ resource_type = "azurerm_resource_group"
+ random_length = 5
+ clean_input = true
+}
+
+resource "azurerm_resource_group" "main" {
+ name = azurecaf_name.resource_group.result
+ location = var.location
+
+ tags = {
+ terraform = "true"
+ application-name = var.application_name
+ spring-cloud-azure-sample = var.sample_tag_value
+ }
+}
+
+resource "azurecaf_name" "azurecaf_name_storage_account" {
+ name = var.application_name
+ resource_type = "azurerm_storage_account"
+ random_length = 5
+ clean_input = true
+}
+
+# storage
+resource "azurerm_storage_account" "storage_account" {
+ name = azurecaf_name.azurecaf_name_storage_account.result
+ resource_group_name = azurerm_resource_group.main.name
+ location = var.location
+ account_tier = "Standard"
+ account_replication_type = "LRS"
+
+ tags = {
+ "spring-cloud-azure-sample" = var.sample_tag_value
+ "terraform" = "true"
+ "application-name" = var.application_name
+ }
+}
+
+# assign roles
+data "azurerm_client_config" "current" {
+}
+
+resource "azurerm_role_assignment" "role_storage_queue_data_contributor" {
+ scope = azurerm_storage_account.storage_account.id
+ role_definition_name = "Storage Queue Data Contributor"
+ principal_id = data.azurerm_client_config.current.object_id
+}
+
+
diff --git a/storage/spring-cloud-azure-starter-storage-queue/storage-queue-client/terraform/outputs.tf b/storage/spring-cloud-azure-starter-storage-queue/storage-queue-client/terraform/outputs.tf
new file mode 100644
index 000000000..abd6c9fb8
--- /dev/null
+++ b/storage/spring-cloud-azure-starter-storage-queue/storage-queue-client/terraform/outputs.tf
@@ -0,0 +1,9 @@
+output "STORAGE_QUEUE_ACCOUNT_NAME" {
+ value = azurerm_storage_account.storage_account.name
+ description = "The name of storage account."
+}
+
+output "RESOURCE_GROUP_NAME" {
+ value = azurerm_resource_group.main.name
+ description = "The resource group name."
+}
diff --git a/storage/spring-cloud-azure-starter-storage-queue/storage-queue-client/terraform/setup_env.ps1 b/storage/spring-cloud-azure-starter-storage-queue/storage-queue-client/terraform/setup_env.ps1
new file mode 100644
index 000000000..d6324cd96
--- /dev/null
+++ b/storage/spring-cloud-azure-starter-storage-queue/storage-queue-client/terraform/setup_env.ps1
@@ -0,0 +1,3 @@
+$env:STORAGE_QUEUE_ACCOUNT_NAME=$(terraform -chdir=terraform output -raw STORAGE_QUEUE_ACCOUNT_NAME)
+
+echo STORAGE_QUEUE_ACCOUNT_NAME=$env:STORAGE_QUEUE_ACCOUNT_NAME
diff --git a/storage/spring-cloud-azure-starter-storage-queue/storage-queue-client/terraform/setup_env.sh b/storage/spring-cloud-azure-starter-storage-queue/storage-queue-client/terraform/setup_env.sh
new file mode 100644
index 000000000..162162ec6
--- /dev/null
+++ b/storage/spring-cloud-azure-starter-storage-queue/storage-queue-client/terraform/setup_env.sh
@@ -0,0 +1,3 @@
+export STORAGE_QUEUE_ACCOUNT_NAME=$(terraform -chdir=./terraform output -raw STORAGE_QUEUE_ACCOUNT_NAME)
+
+echo STORAGE_QUEUE_ACCOUNT_NAME=$STORAGE_QUEUE_ACCOUNT_NAME
diff --git a/storage/spring-cloud-azure-starter-storage-queue/storage-queue-client/terraform/variables.tf b/storage/spring-cloud-azure-starter-storage-queue/storage-queue-client/terraform/variables.tf
new file mode 100644
index 000000000..c65031288
--- /dev/null
+++ b/storage/spring-cloud-azure-starter-storage-queue/storage-queue-client/terraform/variables.tf
@@ -0,0 +1,17 @@
+variable "application_name" {
+ type = string
+ description = "The name of your application."
+ default = "storage-queue-client"
+}
+
+variable "location" {
+ type = string
+ description = "The Azure region where all resources in this example should be created."
+ default = "eastus"
+}
+
+variable "sample_tag_value" {
+ type = string
+ description = "The value of spring-cloud-azure-sample tag."
+ default = "true"
+}