옵션
집 Skill DevOps 및 CI/CD azure-mgmt-mongodbatlas-dotnet

azure-mgmt-mongodbatlas-dotnet

microsoft/skills microsoft/skills

Azure Marketplace를 통해 통합 청구로 MongoDB Atlas 조직을 Azure ARM 리소스로 관리합니다. Azure.ResourceManager.MongoDBAtlas SDK를 사용하여 Atlas 조직을 만들고, 업데이트하고, 나열하거나 삭제합니다.

...모든 것을 확장하십시오
0
업데이트 된 시간 2026년 9월 15일

Azure.ResourceManager.MongoDBAtlas SDK

Azure MarketPlace을 통해 통합 청구로 Azure ARM 리소스로 MongoDB Atlas 조직을 관리합니다.

패키지 정보

속성
패키지`Azure.ResourceManager.MongoDBAtlas`
버전1.0.0 (GA)
API 버전2025-06-01
리소스 유형`MongoDB.Atlas/organizations`
NuGetAzure.ResourceManager.MongoDBAtlas

설치

dotnet add package Azure.ResourceManager.MongoDBAtlas
dotnet add package Azure.Identity
dotnet add package Azure.ResourceManager

중요한 범위 제한

이 SDK는 MarketPlace 통합을 위해 MongoDB Atlas 조직을 Azure ARM 리소스로 관리합니다. 다음을 직접 관리하지 않습니다:

  • Atlas 클러스터
  • 데이터베이스
  • 컬렉션
  • 사용자/역할

클러스터 관리는 조직 생성 후 MongoDB Atlas API를 직접 사용하십시오.

환경 변수

AZURE_SUBSCRIPTION_ID=<your-subscription-id> # 필수: Azure 구독 ID
AZURE_RESOURCE_GROUP=<your-resource-group> # 필수: Azure 리소스 그룹 이름
AZURE_TOKEN_CREDENTIALS=prod  # 프로덕션에서 DefaultAzureCredential을 사용하는 경우에만 필요
AZURE_TENANT_ID=<your-tenant-id> # 서비스principal 인증용 (선택사항)
AZURE_CLIENT_ID=<your-client-id> # 서비스principal 인증용 (선택사항)
AZURE_CLIENT_SECRET=<your-client-secret> # 서비스principal 인증용 (선택사항)
</your-client-secret></your-client-id></your-tenant-id></your-resource-group></your-subscription-id>

인증

using Azure.Identity;
using Azure.ResourceManager;
using Azure.ResourceManager.MongoDBAtlas;
using Azure.ResourceManager.MongoDBAtlas.Models;

// 로컬 개발: DefaultAzureCredential. 프로덕션: AZURE_TOKEN_CREDENTIALS=prod 또는 AZURE_TOKEN_CREDENTIALS=<specific_credential> 설정
var credential = new DefaultAzureCredential(
    DefaultAzureCredential.DefaultEnvironmentVariableName
);
// 또는 프로덕션에서 특정 자격증명을 직접 사용:
// https://learn.microsoft.com/dotnet/api/overview/azure/identity-readme?view=azure-dotnet#credential-classes 참조
// var credential = new ManagedIdentityCredential();
var armClient = new ArmClient(credential);
</specific_credential>

핵심 유형

유형목적
`MongoDBAtlasOrganizationResource`Atlas 조직을 나타내는 ARM 리소스
`MongoDBAtlasOrganizationCollection`리소스 그룹 내 조직 컬렉션
`MongoDBAtlasOrganizationData`조직 리소스의 데이터 모델
`MongoDBAtlasOrganizationProperties`조직별 속성
`MongoDBAtlasMarketplaceDetails`Azure MarketPlace 구독 세부 정보
`MongoDBAtlasOfferDetails`MarketPlace 오퍼 구성
`MongoDBAtlasUserDetails`조직에 대한 사용자 정보
`MongoDBAtlasPartnerProperties`MongoDB별 속성 (조직 이름, ID)

워크플로우

조직 컬렉션 가져오기

// 리소스 그룹 가져오기
var subscription = await armClient.GetDefaultSubscriptionAsync();
var resourceGroup = await subscription.GetResourceGroupAsync("my-resource-group");

// 조직 컬렉션 가져오기
MongoDBAtlasOrganizationCollection organizations = 
    resourceGroup.Value.GetMongoDBAtlasOrganizations();

조직 생성

var organizationName = "my-atlas-org";
var location = AzureLocation.EastUS2;

// 조직 데이터 빌드
var organizationData = new MongoDBAtlasOrganizationData(location)
{
    Properties = new MongoDBAtlasOrganizationProperties(
        marketplace: new MongoDBAtlasMarketplaceDetails(
            subscriptionId: "your-azure-subscription-id",
            offerDetails: new MongoDBAtlasOfferDetails(
                publisherId: "mongodb",
                offerId: "mongodb_atlas_azure_native_prod",
                planId: "private_plan",
                planName: "Pay as You Go (Free) (Private)",
                termUnit: "P1M",
                termId: "gmz7xq9ge3py"
            )
        ),
        user: new MongoDBAtlasUserDetails(
            emailAddress: "[email protected]",
            upn: "[email protected]"
        )
        {
            FirstName = "Admin",
            LastName = "User"
        }
    )
    {
        PartnerProperties = new MongoDBAtlasPartnerProperties
        {
            OrganizationName = organizationName
        }
    },
    Tags = { ["Environment"] = "Production" }
};

// 조직 생성 (장기 실행 작업)
var operation = await organizations.CreateOrUpdateAsync(
    WaitUntil.Completed,
    organizationName,
    organizationData
);

MongoDBAtlasOrganizationResource organization = operation.Value;
Console.WriteLine($"Created: {organization.Id}");

기존 조직 가져오기

// 옵션 1: 컬렉션에서
MongoDBAtlasOrganizationResource org = 
    await organizations.GetAsync("my-atlas-org");

// 옵션 2: 리소스 식별자에서
var resourceId = MongoDBAtlasOrganizationResource.CreateResourceIdentifier(
    subscriptionId: "subscription-id",
    resourceGroupName: "my-resource-group",
    organizationName: "my-atlas-org"
);
MongoDBAtlasOrganizationResource org2 = 
    armClient.GetMongoDBAtlasOrganizationResource(resourceId);
await org2.GetAsync(); // 데이터 가져오기

조직 나열

// 리소스 그룹에서 나열
await foreach (var org in organizations.GetAllAsync())
{
    Console.WriteLine($"Org: {org.Data.Name}");
    Console.WriteLine($"  Location: {org.Data.Location}");
    Console.WriteLine($"  State: {org.Data.Properties?.ProvisioningState}");
}

// 구독 전체에서 나열
await foreach (var org in subscription.GetMongoDBAtlasOrganizationsAsync())
{
    Console.WriteLine($"Org: {org.Data.Name} in {org.Data.Id}");
}

태그 업데이트

// 단일 태그 추가
await organization.AddTagAsync("CostCenter", "12345");

// 모든 태그 교체
await organization.SetTagsAsync(new Dictionary<string>
{
    ["Environment"] = "Production",
    ["Team"] = "Platform"
});

// 태그 제거
await organization.RemoveTagAsync("OldTag");
</string>

조직 속성 업데이트

var patch = new MongoDBAtlasOrganizationPatch
{
    Tags = { ["UpdatedAt"] = DateTime.UtcNow.ToString("o") },
    Properties = new MongoDBAtlasOrganizationUpdateProperties
    {
        // 필요한 경우 사용자 세부 정보 업데이트
        User = new MongoDBAtlasUserDetails(
            emailAddress: "[email protected]",
            upn: "[email protected]"
        )
    }
};

var updateOperation = await organization.UpdateAsync(
    WaitUntil.Completed,
    patch
);

조직 삭제

// 삭제 (장기 실행 작업)
await organization.DeleteAsync(WaitUntil.Completed);

모델 속성 참조

MongoDBAtlasOrganizationProperties

속성유형설명
`Marketplace``MongoDBAtlasMarketplaceDetails`필수. MarketPlace 구독 세부 정보
`User``MongoDBAtlasUserDetails`필수. 조직 관리자 사용자
`PartnerProperties``MongoDBAtlasPartnerProperties`MongoDB별 속성
`ProvisioningState``MongoDBAtlasResourceProvisioningState`읽기 전용. 현재 프로비저닝 상태

MongoDBAtlasMarketplaceDetails

속성유형설명
`SubscriptionId``string`필수. 청구용 Azure 구독 ID
`OfferDetails``MongoDBAtlasOfferDetails`필수. MarketPlace 오퍼 구성
`SubscriptionStatus``MarketplaceSubscriptionStatus`읽기 전용. 구독 상태

MongoDBAtlasOfferDetails

속성유형설명
`PublisherId``string`필수. 발행자 ID (일반적으로 "mongodb")
`OfferId``string`필수. 오퍼 ID
`PlanId``string`필수. 플랜 ID
`PlanName``string`필수. 플랜의 표시 이름
`TermUnit``string`필수. 청구 기간 단위 (예: "P1M")
`TermId``string`필수. 기간 식별자

MongoDBAtlasUserDetails

속성유형설명
`EmailAddress``string`필수. 사용자 이메일 주소
`Upn``string`필수. 사용자 주체 이름
`FirstName``string`선택사항. 사용자 이름
`LastName``string`선택사항. 사용자 성

MongoDBAtlasPartnerProperties

속성유형설명
`OrganizationName``string`MongoDB Atlas 조직 이름
`OrganizationId``string`읽기 전용. MongoDB Atlas 조직 ID

프로비저닝 상태

상태설명
`Succeeded`리소스가 성공적으로 프로비저닝됨
`Failed`프로비저닝 실패
`Canceled`프로비저닝이 취소됨
`Provisioning`리소스가 프로비저닝 중임
`Updating`리소스가 업데이트 중임
`Deleting`리소스가 삭제 중임
`Accepted`요청 수락됨, 프로비저닝 시작

MarketPlace 구독 상태

상태설명
`PendingFulfillmentStart`구독 활성화 대기 중
`Subscribed`활성 구독
`Suspended`구독 일시 중단됨
`Unsubscribed`구독 취소됨

모범 사례

비동기 메서드 사용

// 모든 작업에 비동기를 선호
var org = await organizations.GetAsync("my-org");
await org.Value.AddTagAsync("key", "value");

장기 실행 작업 처리

// 완료까지 대기
var operation = await organizations.CreateOrUpdateAsync(
    WaitUntil.Completed,  // 완료될 때까지 차단
    name,
    data
);

// 또는 시작하고 나중에 폴링
var operation = await organizations.CreateOrUpdateAsync(
    WaitUntil.Started,  // 즉시 반환
    name,
    data
);

// 완료까지 폴링
while (!operation.HasCompleted)
{
    await Task.Delay(TimeSpan.FromSeconds(5));
    await operation.UpdateStatusAsync();
}

프로비저닝 상태 확인

var org = await organizations.GetAsync("my-org");
if (org.Value.Data.Properties?.ProvisioningState == 
    MongoDBAtlasResourceProvisioningState.Succeeded)
{
    Console.WriteLine("Organization is ready");
}

리소스 식별자 사용

// API 호출 없이 식별자 생성
var resourceId = MongoDBAtlasOrganizationResource.CreateResourceIdentifier(
    subscriptionId,
    resourceGroupName,
    organizationName
);

// 리소스 핸들 가져오기 (데이터 없음)
var orgResource = armClient.GetMongoDBAtlasOrganizationResource(resourceId);

// 필요한 경우 데이터 가져오기
var response = await orgResource.GetAsync();

일반적인 오류

오류원인해결 방법
`ResourceNotFound`조직이 존재하지 않음이름 및 리소스 그룹 확인
`AuthorizationFailed`권한 부족리소스 그룹의 RBAC 역할 확인
`InvalidParameter`필수 속성 누락모든 필수 필드가 설정되었는지 확인
`MarketplaceError`MarketPlace 구독 문제오퍼 세부 정보 및 구독 확인

관련 리소스

  • Microsoft Learn: Azure의 MongoDB Atlas
  • API 참조
  • .NET용 Azure SDK
GitHub에서 보기
---
name: azure-mgmt-mongodbatlas-dotnet
description: Manage MongoDB Atlas Organizations as Azure ARM resources with unified billing through Azure Marketplace. Create, update, list, or delete Atlas organizations using the Azure.ResourceManager.MongoDBAtlas SDK.
license: MIT
---

# Azure.ResourceManager.MongoDBAtlas SDK

Manage MongoDB Atlas Organizations as Azure ARM resources with unified billing through Azure Marketplace.

## Package Information

| Property | Value |
|----------|-------|
| Package | `Azure.ResourceManager.MongoDBAtlas` |
| Version | 1.0.0 (GA) |
| API Version | 2025-06-01 |
| Resource Type | `MongoDB.Atlas/organizations` |
| NuGet | [Azure.ResourceManager.MongoDBAtlas](https://www.nuget.org/packages/Azure.ResourceManager.MongoDBAtlas) |

## Installation

```bash
dotnet add package Azure.ResourceManager.MongoDBAtlas
dotnet add package Azure.Identity
dotnet add package Azure.ResourceManager
```

## Important Scope Limitation

This SDK manages **MongoDB Atlas Organizations as Azure ARM resources** for marketplace integration. It does NOT directly manage:
- Atlas clusters
- Databases
- Collections
- Users/roles

For cluster management, use the MongoDB Atlas API directly after creating the organization.

## Environment Variables

```bash
AZURE_SUBSCRIPTION_ID=<your-subscription-id> # Required: Azure subscription ID
AZURE_RESOURCE_GROUP=<your-resource-group> # Required: Azure resource group name
AZURE_TOKEN_CREDENTIALS=prod  # Required only if DefaultAzureCredential is used in production
AZURE_TENANT_ID=<your-tenant-id> # For service principal auth (optional)
AZURE_CLIENT_ID=<your-client-id> # For service principal auth (optional)
AZURE_CLIENT_SECRET=<your-client-secret> # For service principal auth (optional)
```

## Authentication

```csharp
using Azure.Identity;
using Azure.ResourceManager;
using Azure.ResourceManager.MongoDBAtlas;
using Azure.ResourceManager.MongoDBAtlas.Models;

// Local dev: DefaultAzureCredential. Production: set AZURE_TOKEN_CREDENTIALS=prod or AZURE_TOKEN_CREDENTIALS=<specific_credential>
var credential = new DefaultAzureCredential(
    DefaultAzureCredential.DefaultEnvironmentVariableName
);
// Or use a specific credential directly in production:
// See https://learn.microsoft.com/dotnet/api/overview/azure/identity-readme?view=azure-dotnet#credential-classes
// var credential = new ManagedIdentityCredential();
var armClient = new ArmClient(credential);
```

## Core Types

| Type | Purpose |
|------|---------|
| `MongoDBAtlasOrganizationResource` | ARM resource representing an Atlas organization |
| `MongoDBAtlasOrganizationCollection` | Collection of organizations in a resource group |
| `MongoDBAtlasOrganizationData` | Data model for organization resource |
| `MongoDBAtlasOrganizationProperties` | Organization-specific properties |
| `MongoDBAtlasMarketplaceDetails` | Azure Marketplace subscription details |
| `MongoDBAtlasOfferDetails` | Marketplace offer configuration |
| `MongoDBAtlasUserDetails` | User information for the organization |
| `MongoDBAtlasPartnerProperties` | MongoDB-specific properties (org name, ID) |

## Workflows

### Get Organization Collection

```csharp
// Get resource group
var subscription = await armClient.GetDefaultSubscriptionAsync();
var resourceGroup = await subscription.GetResourceGroupAsync("my-resource-group");

// Get organizations collection
MongoDBAtlasOrganizationCollection organizations = 
    resourceGroup.Value.GetMongoDBAtlasOrganizations();
```

### Create Organization

```csharp
var organizationName = "my-atlas-org";
var location = AzureLocation.EastUS2;

// Build organization data
var organizationData = new MongoDBAtlasOrganizationData(location)
{
    Properties = new MongoDBAtlasOrganizationProperties(
        marketplace: new MongoDBAtlasMarketplaceDetails(
            subscriptionId: "your-azure-subscription-id",
            offerDetails: new MongoDBAtlasOfferDetails(
                publisherId: "mongodb",
                offerId: "mongodb_atlas_azure_native_prod",
                planId: "private_plan",
                planName: "Pay as You Go (Free) (Private)",
                termUnit: "P1M",
                termId: "gmz7xq9ge3py"
            )
        ),
        user: new MongoDBAtlasUserDetails(
            emailAddress: "[email protected]",
            upn: "[email protected]"
        )
        {
            FirstName = "Admin",
            LastName = "User"
        }
    )
    {
        PartnerProperties = new MongoDBAtlasPartnerProperties
        {
            OrganizationName = organizationName
        }
    },
    Tags = { ["Environment"] = "Production" }
};

// Create the organization (long-running operation)
var operation = await organizations.CreateOrUpdateAsync(
    WaitUntil.Completed,
    organizationName,
    organizationData
);

MongoDBAtlasOrganizationResource organization = operation.Value;
Console.WriteLine($"Created: {organization.Id}");
```

### Get Existing Organization

```csharp
// Option 1: From collection
MongoDBAtlasOrganizationResource org = 
    await organizations.GetAsync("my-atlas-org");

// Option 2: From resource identifier
var resourceId = MongoDBAtlasOrganizationResource.CreateResourceIdentifier(
    subscriptionId: "subscription-id",
    resourceGroupName: "my-resource-group",
    organizationName: "my-atlas-org"
);
MongoDBAtlasOrganizationResource org2 = 
    armClient.GetMongoDBAtlasOrganizationResource(resourceId);
await org2.GetAsync(); // Fetch data
```

### List Organizations

```csharp
// List in resource group
await foreach (var org in organizations.GetAllAsync())
{
    Console.WriteLine($"Org: {org.Data.Name}");
    Console.WriteLine($"  Location: {org.Data.Location}");
    Console.WriteLine($"  State: {org.Data.Properties?.ProvisioningState}");
}

// List across subscription
await foreach (var org in subscription.GetMongoDBAtlasOrganizationsAsync())
{
    Console.WriteLine($"Org: {org.Data.Name} in {org.Data.Id}");
}
```

### Update Tags

```csharp
// Add a single tag
await organization.AddTagAsync("CostCenter", "12345");

// Replace all tags
await organization.SetTagsAsync(new Dictionary<string, string>
{
    ["Environment"] = "Production",
    ["Team"] = "Platform"
});

// Remove a tag
await organization.RemoveTagAsync("OldTag");
```

### Update Organization Properties

```csharp
var patch = new MongoDBAtlasOrganizationPatch
{
    Tags = { ["UpdatedAt"] = DateTime.UtcNow.ToString("o") },
    Properties = new MongoDBAtlasOrganizationUpdateProperties
    {
        // Update user details if needed
        User = new MongoDBAtlasUserDetails(
            emailAddress: "[email protected]",
            upn: "[email protected]"
        )
    }
};

var updateOperation = await organization.UpdateAsync(
    WaitUntil.Completed,
    patch
);
```

### Delete Organization

```csharp
// Delete (long-running operation)
await organization.DeleteAsync(WaitUntil.Completed);
```

## Model Properties Reference

### MongoDBAtlasOrganizationProperties

| Property | Type | Description |
|----------|------|-------------|
| `Marketplace` | `MongoDBAtlasMarketplaceDetails` | Required. Marketplace subscription details |
| `User` | `MongoDBAtlasUserDetails` | Required. Organization admin user |
| `PartnerProperties` | `MongoDBAtlasPartnerProperties` | MongoDB-specific properties |
| `ProvisioningState` | `MongoDBAtlasResourceProvisioningState` | Read-only. Current provisioning state |

### MongoDBAtlasMarketplaceDetails

| Property | Type | Description |
|----------|------|-------------|
| `SubscriptionId` | `string` | Required. Azure subscription ID for billing |
| `OfferDetails` | `MongoDBAtlasOfferDetails` | Required. Marketplace offer configuration |
| `SubscriptionStatus` | `MarketplaceSubscriptionStatus` | Read-only. Subscription status |

### MongoDBAtlasOfferDetails

| Property | Type | Description |
|----------|------|-------------|
| `PublisherId` | `string` | Required. Publisher ID (typically "mongodb") |
| `OfferId` | `string` | Required. Offer ID |
| `PlanId` | `string` | Required. Plan ID |
| `PlanName` | `string` | Required. Display name of the plan |
| `TermUnit` | `string` | Required. Billing term unit (e.g., "P1M") |
| `TermId` | `string` | Required. Term identifier |

### MongoDBAtlasUserDetails

| Property | Type | Description |
|----------|------|-------------|
| `EmailAddress` | `string` | Required. User email address |
| `Upn` | `string` | Required. User principal name |
| `FirstName` | `string` | Optional. User first name |
| `LastName` | `string` | Optional. User last name |

### MongoDBAtlasPartnerProperties

| Property | Type | Description |
|----------|------|-------------|
| `OrganizationName` | `string` | Name of the MongoDB Atlas organization |
| `OrganizationId` | `string` | Read-only. MongoDB Atlas organization ID |

## Provisioning States

| State | Description |
|-------|-------------|
| `Succeeded` | Resource provisioned successfully |
| `Failed` | Provisioning failed |
| `Canceled` | Provisioning was canceled |
| `Provisioning` | Resource is being provisioned |
| `Updating` | Resource is being updated |
| `Deleting` | Resource is being deleted |
| `Accepted` | Request accepted, provisioning starting |

## Marketplace Subscription Status

| Status | Description |
|--------|-------------|
| `PendingFulfillmentStart` | Subscription pending activation |
| `Subscribed` | Active subscription |
| `Suspended` | Subscription suspended |
| `Unsubscribed` | Subscription canceled |

## Best Practices

### Use Async Methods

```csharp
// Prefer async for all operations
var org = await organizations.GetAsync("my-org");
await org.Value.AddTagAsync("key", "value");
```

### Handle Long-Running Operations

```csharp
// Wait for completion
var operation = await organizations.CreateOrUpdateAsync(
    WaitUntil.Completed,  // Blocks until done
    name,
    data
);

// Or start and poll later
var operation = await organizations.CreateOrUpdateAsync(
    WaitUntil.Started,  // Returns immediately
    name,
    data
);

// Poll for completion
while (!operation.HasCompleted)
{
    await Task.Delay(TimeSpan.FromSeconds(5));
    await operation.UpdateStatusAsync();
}
```

### Check Provisioning State

```csharp
var org = await organizations.GetAsync("my-org");
if (org.Value.Data.Properties?.ProvisioningState == 
    MongoDBAtlasResourceProvisioningState.Succeeded)
{
    Console.WriteLine("Organization is ready");
}
```

### Use Resource Identifiers

```csharp
// Create identifier without API call
var resourceId = MongoDBAtlasOrganizationResource.CreateResourceIdentifier(
    subscriptionId,
    resourceGroupName,
    organizationName
);

// Get resource handle (no data yet)
var orgResource = armClient.GetMongoDBAtlasOrganizationResource(resourceId);

// Fetch data when needed
var response = await orgResource.GetAsync();
```

## Common Errors

| Error | Cause | Solution |
|-------|-------|----------|
| `ResourceNotFound` | Organization doesn't exist | Verify name and resource group |
| `AuthorizationFailed` | Insufficient permissions | Check RBAC roles on resource group |
| `InvalidParameter` | Missing required properties | Ensure all required fields are set |
| `MarketplaceError` | Marketplace subscription issue | Verify offer details and subscription |

## Related Resources

- [Microsoft Learn: MongoDB Atlas on Azure](https://learn.microsoft.com/en-us/azure/partner-solutions/mongodb-atlas/)
- [API Reference](https://learn.microsoft.com/en-us/dotnet/api/azure.resourcemanager.mongodbatlas)
- [Azure SDK for .NET](https://github.com/Azure/azure-sdk-for-net/tree/main/sdk/mongodbatlas)

모든 파일

1개 파일

azure-mgmt-mongodbatlas-dotnet 설치

스킬 파일을 다운로드하여 .claude/skills/ 디렉토리에 추출하세요.

ZIP 다운로드

저장소를 클론하고 스킬 파일을 프로젝트에 복사하세요.

git clone https://github.com/microsoft/skills/tree/main/.github/plugins/azure-sdk-dotnet/skills/azure-mgmt-mongodbatlas-dotnet # Copy SKILL.md to your .claude/skills/ directory

복사 복사
빠른 설정: 스킬 폴더를 .claude/skills/에 복사하세요. Claude가 자동으로 감지하고 사용합니다.
저장소 microsoft/skills

관련 스킬

base44-cli
업데이트 된 시간 2026년 6월 29일
klingai-upgrade-migration
업데이트 된 시간 2026년 7월 3일
Railway CLI Management
업데이트 된 시간 2026년 7월 2일
Verification &amp; Quality Assurance
업데이트 된 시간 2026년 6월 29일
OR