Azure Cosmos DB 에뮬레이터를 사용하여 로컬로 개발
이 문서의 내용
에뮬레이터의 일반적인 사용 사례는 애플리케이션을 빌드하는 동안 개발 데이터베이스 역할을 하는 것입니다. 개발에 에뮬레이터를 사용하면 서비스 비용을 부담하지 않고 Azure Cosmos DB와 같은 데이터베이스에 대한 데이터를 만들고 모델링하는 특성을 학습할 수 있습니다. 또한 에뮬레이터를 자동화 워크플로의 일부로 사용하면 동일한 통합 테스트 도구 모음을 실행할 수 있습니다. 동일한 테스트가 개발 컴퓨터에서 로컬로 실행되고 연속 통합 작업에서 원격으로 실행되도록 할 수 있습니다.
필수 조건
.NET 6 이상 , Node.js v20 이상 또는 Python 3.7 이상
PATH
에서 필요한 실행 파일을 모두 사용할 수 있는지 확인합니다.
Windows 에뮬레이터
64비트 Windows Server 2016, 2019, Windows 10 또는 Windows 11.
최소 하드웨어 요구 사항:
2GB RAM
10GB의 하드 디스크 여유 공간
Docker 에뮬레이터
에뮬레이터 설치
에뮬레이터는 여러 변형이 있으며 각 변형마다 상대적으로 마찰이 없는 설치 프로세스가 있습니다.
시작하려면 MCR(Microsoft Container Registry) 컨테이너 이미지의 Linux 변형을 가져옵니다.
컨테이너 레지스트리에서 로컬 Docker 호스트로 mcr.microsoft.com/cosmosdb/linux/azure-cosmos-emulator
Linux 컨테이너 이미지를 끌어옵니다.
docker pull mcr.microsoft.com/cosmosdb/linux/azure-cosmos-emulator:latest
에뮬레이터 이미지를 로컬 Docker 호스트에서 사용할 수 있는지 확인합니다.
docker images
시작하려면 MCR(Microsoft Container Registry) 에서 컨테이너 이미지의 Windows 변형을 가져옵니다.
컨테이너 레지스트리에서 로컬 Docker 호스트로 mcr.microsoft.com/cosmosdb/windows/azure-cosmos-emulator
Windows 컨테이너 이미지를 끌어옵니다.
docker pull mcr.microsoft.com/cosmosdb/windows/azure-cosmos-emulator
에뮬레이터 이미지를 로컬 Docker 호스트에서 사용할 수 있는지 확인합니다.
docker images
시작하려면 로컬 컴퓨터에 최신 버전의 Azure Cosmos DB 에뮬레이터를 다운로드하여 설치합니다.
팁
에뮬레이터 릴리스 정보 문서에서는 사용 가능한 모든 버전 및 각 릴리스에 적용된 기능 업데이트를 나열합니다.
Azure Cosmos DB 에뮬레이터 를 다운로드합니다.
로컬 컴퓨터에서 관리자 권한 으로 설치 프로그램을 실행합니다.
에뮬레이터가 적절한 개발자 인증서를 자동으로 설치하고 로컬 컴퓨터에 방화벽 규칙을 구성합니다.
시작하려면 MCR(Microsoft Container Registry) 컨테이너 이미지의 Linux 변형을 가져옵니다.
컨테이너 레지스트리에서 로컬 Docker 호스트로 mongodb
태그를 사용하여 mcr.microsoft.com/cosmosdb/linux/azure-cosmos-emulator
Linux 컨테이너 이미지를 끌어옵니다.
docker pull mcr.microsoft.com/cosmosdb/linux/azure-cosmos-emulator:mongodb
에뮬레이터 이미지를 로컬 Docker 호스트에서 사용할 수 있는지 확인합니다.
docker images
Docker(Windows) 컨테이너 이미지는 MongoDB용 API를 지원하지 않습니다.
시작하려면 로컬 컴퓨터에 최신 버전의 Azure Cosmos DB 에뮬레이터를 다운로드하여 설치합니다.
팁
에뮬레이터 릴리스 정보 문서에서는 사용 가능한 모든 버전 및 각 릴리스에 적용된 기능 업데이트를 나열합니다.
Azure Cosmos DB 에뮬레이터 를 다운로드합니다.
로컬 컴퓨터에서 관리자 권한 으로 설치 프로그램을 실행합니다.
에뮬레이터가 적절한 개발자 인증서를 자동으로 설치하고 로컬 컴퓨터에 방화벽 규칙을 구성합니다.
에뮬레이터의 Docker 컨테이너 변형(Linux 또는 Windows)은 Apache Cassandra용 API, Apache Gremlin용 API 또는 Table용 API를 지원하지 않습니다.
시작하려면 로컬 컴퓨터에 최신 버전의 Azure Cosmos DB 에뮬레이터를 다운로드하여 설치합니다.
팁
에뮬레이터 릴리스 정보 문서에서는 사용 가능한 모든 버전 및 각 릴리스에 적용된 기능 업데이트를 나열합니다.
Azure Cosmos DB 에뮬레이터 를 다운로드합니다.
로컬 컴퓨터에서 관리자 권한 으로 설치 프로그램을 실행합니다.
에뮬레이터가 적절한 개발자 인증서를 자동으로 설치하고 로컬 컴퓨터에 방화벽 규칙을 구성합니다.
에뮬레이터 시작
다운로드를 완료했으면 지정된 API를 사용하도록 설정하여 에뮬레이터를 시작합니다.
에뮬레이터의 Docker 컨테이너 변형은 Apache Cassandra용 API를 지원하지 않습니다.
%ProgramFiles%\Azure Cosmos DB Emulator
경로에서 에뮬레이터의 실행 파일(Microsoft.Azure.Cosmos.Emulator.exe
)을 시작합니다. 다음 매개 변수를 사용하여 에뮬레이터를 구성합니다.
설명
EnableCassandraEndpoint
‘Apache Cassandra용 API 엔드포인트를 사용하도록 설정합니다.’
CassandraPort
‘엔드포인트에 사용할 포트 번호.’
Microsoft.Azure.Cosmos.Emulator.exe /EnableCassandraEndpoint /CassandraPort=65200
에뮬레이터는 자동으로 URL https://localhost:8081/_explorer/index.html
을 사용하여 데이터 탐색기를 엽니다.
에뮬레이터의 Docker 컨테이너 변형은 Apache Gremlin용 API를 지원하지 않습니다.
%ProgramFiles%\Azure Cosmos DB Emulator
경로에서 에뮬레이터의 실행 파일(Microsoft.Azure.Cosmos.Emulator.exe
)을 시작합니다. 다음 매개 변수를 사용하여 에뮬레이터를 구성합니다.
설명
EnableGremlinEndpoint
‘Apache Gremlin용 API 엔드포인트를 사용하도록 설정합니다.’
GremlinPort
‘엔드포인트에 사용할 포트 번호.’
Microsoft.Azure.Cosmos.Emulator.exe /EnableGremlinEndpoint /GremlinPort=65400
에뮬레이터는 자동으로 URL https://localhost:8081/_explorer/index.html
을 사용하여 데이터 탐색기를 엽니다.
에뮬레이터의 Docker 컨테이너 변형은 Table용 API를 지원하지 않습니다.
%ProgramFiles%\Azure Cosmos DB Emulator
경로에서 에뮬레이터의 실행 파일(Microsoft.Azure.Cosmos.Emulator.exe
)을 시작합니다. 다음 매개 변수를 사용하여 에뮬레이터를 구성합니다.
설명
EnableTableEndpoint
‘Table용 API 엔드포인트를 사용하도록 설정합니다.’
TablePort
‘엔드포인트에 사용할 포트 번호.’
Microsoft.Azure.Cosmos.Emulator.exe /EnableTableEndpoint /TablePort=65500
에뮬레이터는 자동으로 URL https://localhost:8081/_explorer/index.html
을 사용하여 데이터 탐색기를 엽니다.
컨테이너 이미지 및 다음 구성을 사용하여 새 컨테이너를 실행합니다.
설명
AZURE_COSMOS_EMULATOR_PARTITION_COUNT
(선택 사항)
‘사용할 파티션 수를 지정합니다.’
AZURE_COSMOS_EMULATOR_ENABLE_DATA_PERSISTENCE
(선택 사항)
‘에뮬레이터 실행 간에 데이터 지속성을 사용하도록 설정합니다.’
AZURE_COSMOS_EMULATOR_IP_ADDRESS_OVERRIDE
(선택 사항)
‘에뮬레이터의 기본 IP 주소를 재정의합니다.’
Linux 시스템의 경우 다음을 사용합니다.
docker run \
--publish 8081:8081 \
--publish 10250-10255:10250-10255 \
--name linux-emulator \
--detach \
mcr.microsoft.com/cosmosdb/linux/azure-cosmos-emulator:latest
Windows 시스템의 경우 다음을 사용합니다.
$parameters = @(
"--publish", "8081:8081"
"--publish", "10250-10255:10250-10255"
"--name", "windows-emulator"
"--detach"
)
docker run @parameters mcr.microsoft.com/cosmosdb/linux/azure-cosmos-emulator:latest
https://localhost:8081/_explorer/index.html
로 이동하여 데이터 탐색기에 액세스합니다.
탑재 바운딩을 위한 새 디렉터리 만들기
컨테이너 이미지를 사용하여 새 컨테이너를 실행합니다.
$parameters = @(
"--publish", "8081:8081"
"--publish", "10250-10255:10250-10255"
"--name", "windows-emulator"
"--detach"
)
docker run @parameters mcr.microsoft.com/cosmosdb/windows/azure-cosmos-emulator
https://localhost:8081/_explorer/index.html
로 이동하여 데이터 탐색기에 액세스합니다.
Windows 시작 메뉴 에서 애플리케이션을 선택하여 에뮬레이터를 시작합니다.
또는 %ProgramFiles%\Azure Cosmos DB Emulator
경로에서 에뮬레이터의 실행 파일(Microsoft.Azure.Cosmos.Emulator.exe
)을 시작할 수 있습니다.
또한 명령줄에서 에뮬레이터를 시작할 수도 있습니다. 다음 매개 변수를 사용하여 에뮬레이터를 구성합니다.
설명
Port
‘NoSQL용 API 엔드포인트에 사용할 포트 번호.’
Microsoft.Azure.Cosmos.Emulator.exe /Port=65000
에뮬레이터는 자동으로 URL https://localhost:8081/_explorer/index.html
을 사용하여 데이터 탐색기를 엽니다.
컨테이너 이미지 및 다음 구성을 사용하여 새 컨테이너를 실행합니다.
설명
AZURE_COSMOS_EMULATOR_ENABLE_MONGODB_ENDPOINT
사용할 MongoDB 엔드포인트의 버전을 지정합니다. 지원되는 엔드포인트는 3.2
, 3.6
또는 4.0
입니다.
AZURE_COSMOS_EMULATOR_PARTITION_COUNT
(선택 사항)
‘사용할 파티션 수를 지정합니다.’
AZURE_COSMOS_EMULATOR_ENABLE_DATA_PERSISTENCE
(선택 사항)
‘에뮬레이터 실행 간에 데이터 지속성을 사용하도록 설정합니다.’
AZURE_COSMOS_EMULATOR_IP_ADDRESS_OVERRIDE
(선택 사항)
‘에뮬레이터의 기본 IP 주소를 재정의합니다.’
Linux 시스템의 경우 다음을 사용합니다.
docker run \
--publish 8081:8081 \
--publish 10250:10250 \
--env AZURE_COSMOS_EMULATOR_ENABLE_MONGODB_ENDPOINT=4.0 \
--name linux-emulator \
--detach \
mcr.microsoft.com/cosmosdb/linux/azure-cosmos-emulator:mongodb
Windows 시스템의 경우 다음을 사용합니다.
$parameters = @(
"--publish", "8081:8081"
"--publish", "10250:10250"
"--env", "AZURE_COSMOS_EMULATOR_ENABLE_MONGODB_ENDPOINT=4.0"
"--name", "windows-emulator"
"--detach"
)
docker run @parameters mcr.microsoft.com/cosmosdb/linux/azure-cosmos-emulator:mongodb
https://localhost:8081/_explorer/index.html
로 이동하여 데이터 탐색기에 액세스합니다.
Docker(Windows) 컨테이너 이미지는 MongoDB용 API를 지원하지 않습니다.
%ProgramFiles%\Azure Cosmos DB Emulator
경로에서 에뮬레이터의 실행 파일(Microsoft.Azure.Cosmos.Emulator.exe
)을 시작합니다. 다음 매개 변수를 사용하여 에뮬레이터를 구성합니다.
설명
EnableMongoDbEndpoint
‘지정된 MongoDB 버전에서 MongoDB용 API 엔드포인트를 사용하도록 설정합니다.’
MongoPort
‘엔드포인트에 사용할 포트 번호.’
Microsoft.Azure.Cosmos.Emulator.exe /EnableMongoDbEndpoint=4.0 /MongoPort=65200
참고 항목
에뮬레이터에서 지원하는 명령줄 인수 및 MongoDB 버전에 대한 자세한 내용은 명령줄 매개 변수 를 참조하세요.
에뮬레이터는 자동으로 URL https://localhost:8081/_explorer/index.html
을 사용하여 데이터 탐색기를 엽니다.
에뮬레이터의 TLS/SSL 인증서 가져오기
에뮬레이터의 TLS/SSL 인증서를 가져와 클라이언트에서 TLS/SSL을 사용하지 않도록 설정하지 않고 기본 설정 개발자 SDK와 함께 에뮬레이터를 사용합니다.
에뮬레이터의 Docker 컨테이너 변형(Linux 또는 Windows)은 Apache Cassandra용 API, Apache Gremlin용 API 또는 Table용 API를 지원하지 않습니다.
에뮬레이터를 Windows 로컬로 설치하면 자동으로 TLS/SSL 인증서를 가져옵니다. 추가 작업은 필요하지 않습니다.
에뮬레이터에 대한 인증서는 실행 중인 컨테이너의 _explorer/emulator.pem
경로에서 사용할 수 있습니다. curl
을 사용하여 실행 중인 컨테이너에서 로컬 컴퓨터로 인증서를 다운로드합니다.
실행 중인 컨테이너에서 인증서를 가져옵니다.
Linux 시스템의 경우 다음을 사용합니다.
curl --insecure https://localhost:8081/_explorer/emulator.pem > ~/emulatorcert.crt
Windows 시스템의 경우 다음을 사용합니다.
$parameters = @{
Uri = 'https://localhost:8081/_explorer/emulator.pem'
Method = 'GET'
OutFile = 'emulatorcert.crt'
SkipCertificateCheck = $True
}
Invoke-WebRequest @parameters
운영 체제에 적절한 명령을 사용하여 인증서 번들을 다시 생성합니다.
Debian 기반 Linux 시스템(예: Ubuntu)의 경우 다음을 사용합니다.
sudo update-ca-certificates
Red Hat 기반 Linux 시스템(예: CentOS, Fedora)의 경우 다음을 사용합니다.
sudo update-ca-trust
Windows 시스템의 경우 다음을 사용합니다.
certutil -f -addstore "Root" ~/emulatorcert.crt
자세한 지침은 운영 체제와 관련된 설명서를 참조하세요.
Docker(Windows) 컨테이너 이미지는 MongoDB용 API를 지원하지 않습니다.
에뮬레이터를 Windows 로컬로 설치하면 자동으로 TLS/SSL 인증서를 가져옵니다. 추가 작업은 필요하지 않습니다.
에뮬레이터에 대한 인증서는 실행 중인 컨테이너의 /_explorer/emulator.pem
경로에서 사용할 수 있습니다.
실행 중인 컨테이너에서 로컬 컴퓨터로 인증서를 다운로드합니다.
Linux 시스템의 경우 다음을 사용합니다.
curl --insecure https://localhost:8081/_explorer/emulator.pem > ~/emulatorcert.crt
Windows 시스템의 경우 다음을 사용합니다.
$parameters = @{
Uri = 'https://localhost:8081/_explorer/emulator.pem'
Method = 'GET'
OutFile = 'emulatorcert.crt'
SkipCertificateCheck = $True
}
Invoke-WebRequest @parameters
참고 항목
이전에 해당 값을 수정한 경우 호스트(또는 IP 주소) 및 포트 번호를 변경해야 할 수 있습니다.
운영 체제에서 일반적으로 사용되는 프로세스에 따라 인증서를 설치합니다. 예를 들어 Linux에서는 인증서를 /usr/local/share/ca-certificates/
경로에 복사합니다.
Linux 시스템의 경우 다음을 사용합니다.
cp ~/emulatorcert.crt /usr/local/share/ca-certificates/
Windows 시스템의 경우 다음을 사용합니다.
$parameters = @{
FilePath = 'emulatorcert.crt'
CertStoreLocation = 'Cert:\CurrentUser\Root'
}
Import-Certificate @parameters
Linux 시스템의 경우 Linux 배포에 적절한 명령을 사용하여 인증서 번들을 다시 생성합니다.
Debian 기반 Linux 시스템(예: Ubuntu)의 경우 다음을 사용합니다.
sudo update-ca-certificates
Red Hat 기반 Linux 시스템(예: CentOS, Fedora)의 경우 다음을 사용합니다.
sudo update-ca-trust
자세한 지침은 운영 체제와 관련된 설명서를 참조하세요.
에뮬레이터에 대한 인증서는 실행 중인 컨테이너의 C:\CosmosDB.Emulator\bind-mount
폴더에서 사용할 수 있습니다. 이 폴더에는 인증서를 자동으로 설치하는 스크립트도 포함되어 있습니다.
docker cp
을(를) 사용하여 전체 폴더를 로컬 컴퓨터에 복사합니다.
docker cp windows-emulator:C:\CosmosDB.Emulator\bind-mount .
폴더에서 importcert.ps1 스크립트를 실행합니다.
.\bind-mount\importcert.ps1
에뮬레이터를 Windows 로컬로 설치하면 자동으로 TLS/SSL 인증서를 가져옵니다. 추가 작업은 필요하지 않습니다.
SDK에서 에뮬레이터에 연결
각 SDK에는 일반적으로 SDK를 Azure Cosmos DB 계정에 연결하는 데 사용되는 클라이언트 클래스가 포함되어 있습니다. 에뮬레이터의 자격 증명 사용하여 SDK를 에뮬레이터 인스턴스에 대신 연결할 수 있습니다.
Azure Cosmos DB API for NoSQL .NET SDK 를 사용하여 .NET 애플리케이션에서 에뮬레이터에 연결합니다.
빈 폴더에서 시작합니다.
새 .NET 콘솔 애플리케이션 만들기
dotnet new console
NuGet에서 Microsoft.Azure.Cosmos
패키지를 추가합니다.
dotnet add package Microsoft.Azure.Cosmos
Program.cs 파일을 엽니다.
파일 내의 기존 콘텐츠를 삭제합니다.
Microsoft.Azure.Cosmos
네임스페이스에 using 블록을 추가합니다.
using Microsoft.Azure.Cosmos;
에뮬레이터의 자격 증명을 사용하여 CosmosClient 의 새 인스턴스를 만듭니다.
using CosmosClient client = new(
accountEndpoint: "https://localhost:8081/",
authKeyOrResourceToken: "C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw=="
);
CreateDatabaseIfNotExistsAsync 및 CreateContainerIfNotExistsAsync 를 사용하여 새 데이터베이스 및 컨테이너를 만듭니다.
Database database = await client.CreateDatabaseIfNotExistsAsync(
id: "cosmicworks",
throughput: 400
);
Container container = await database.CreateContainerIfNotExistsAsync(
id: "products",
partitionKeyPath: "/id"
);
UpsertItemAsync 를 사용하여 컨테이너에 새 항목을 만듭니다.
var item = new
{
id = "68719518371",
name = "Kiama classic surfboard"
};
await container.UpsertItemAsync(item);
.NET 애플리케이션을 실행합니다.
dotnet run
Warning
SSL 오류가 발생하면 애플리케이션에 대해 TLS/SSL을 사용하지 않도록 설정해야 할 수 있습니다. 이 오류는 일반적으로 컨테이너에서 Azure Cosmos DB 에뮬레이터를 사용하여 로컬 컴퓨터에서 개발하고 컨테이너의 SSL 인증서를 가져오지 않은 경우에 발생합니다. 이 문제를 해결하려면 클라이언트를 만들기 전에 TLS/SSL 유효성 검사를 사용하지 않도록 클라이언트의 옵션을 구성합니다.
CosmosClientOptions options = new ()
{
HttpClientFactory = () => new HttpClient(new HttpClientHandler()
{
ServerCertificateCustomValidationCallback = HttpClientHandler.DangerousAcceptAnyServerCertificateValidator
}),
ConnectionMode = ConnectionMode.Gateway,
};
using CosmosClient client = new(
...,
...,
clientOptions: options
);
Azure Cosmos DB API for NoSQL Python SDK 를 사용하여 Python 애플리케이션에서 에뮬레이터에 연결합니다.
빈 폴더에서 시작합니다.
Python 패키지 인덱스에서 azure-cosmos
패키지를 가져옵니다.
pip install azure-cosmos
app.py 파일을 만듭니다.
azure.cosmos
모듈에서 CosmosClient
및 PartitionKey
를 가져옵니다.
from azure.cosmos import CosmosClient, PartitionKey
에뮬레이터의 자격 증명을 사용하여 새 CosmosClient 를 만듭니다.
client = CosmosClient(
url="<https://localhost:8081>",
credential=(
"C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGG"
"yPMbIZnqyMsEcaGQy67XIw/Jw=="
),
)
create_database_if_not_exists 및 create_container_if_not_exists 를 사용하여 새 데이터베이스 및 컨테이너를 만듭니다.
database = client.create_database_if_not_exists(
id="cosmicworks",
offer_throughput=400,
)
container = database.create_container_if_not_exists(
id="products",
partition_key=PartitionKey(
path="/id",
),
)
upsert_item 를 사용하여 컨테이너에 새 항목을 만듭니다.
item = {"id": "68719518371", "name": "Kiama classic surfboard"}
container.upsert_item(item)
Python 애플리케이션을 실행합니다.
python app.py
Warning
SSL 오류가 발생하면 애플리케이션에 대해 TLS/SSL을 사용하지 않도록 설정해야 할 수 있습니다. 이 오류는 일반적으로 컨테이너에서 Azure Cosmos DB 에뮬레이터를 사용하여 로컬 컴퓨터에서 개발하고 컨테이너의 SSL 인증서를 가져오지 않은 경우에 발생합니다. 이 문제를 해결하려면 클라이언트를 만들기 전에 TLS/SSL 유효성 검사를 사용하지 않도록 애플리케이션의 옵션을 구성합니다.
import urllib3
urllib3.disable_warnings()
SSL 오류가 계속 발생하는 경우 Python이 다른 인증서 저장소에서 인증서를 검색할 수 있습니다. Python에서 인증서를 찾는 경로를 확인하려면 다음 단계를 수행합니다.
Important
Python 가상 환경 (venv)을 사용하는 경우 명령을 실행하기 전에 활성화 되었는지 확인합니다.
터미널 열기
Python 버전에 따라 python 또는 python3을 입력하여 Python 인터프리터를 시작합니다.
Python 인터프리터에서 다음 명령을 실행합니다.
from requests.utils import DEFAULT_CA_BUNDLE_PATH
print(DEFAULT_CA_BUNDLE_PATH)
가상 환경 내부에서 경로는(적어도 Ubuntu에서) 다음과 같을 수 있습니다.
path/to/venv/lib/pythonX.XX/site-packages/certifi/cacert.pem
가상 환경 외부에서 경로는(적어도 Ubuntu에서) 다음과 같을 수 있습니다.
/etc/ssl/certs/ca-certificates.crt
DEFAULT_CA_BUNDLE_PATH 식별한 후 새 터미널 을 열고 다음 명령을 실행하여 인증서 번들에 에뮬레이터 인증서를 추가합니다.
Important
DEFAULT_CA_BUNDLE_PATH 변수가 시스템 디렉터리 를 가리키는 경우 "사용 권한 거부" 오류가 발생할 수 있습니다. 이 경우 상승된 권한(루트)으로 명령을 실행해야 합니다. 또한 제공된 명령을 실행한 후 인증서 번들을 업데이트하고 다시 생성 해야 합니다.
# Add a new line to the certificate bundle
echo >> /path/to/ca_bundle
# Append the emulator certificate to the certificate bundle
cat /path/to/emulatorcert.crt >> /path/to/ca_bundle
Azure Cosmos DB API for NoSQL Node.js SDK 를 사용하여 Node.js/JavaScript 애플리케이션에서 에뮬레이터에 연결합니다.
빈 폴더에서 시작합니다.
새 모듈을 초기화합니다.
npm init es6 --yes
노드 패키지 관리자에서 @azure/cosmos
패키지를 설치합니다.
npm install --save @azure/cosmos
app.js 파일을 만듭니다.
@azure/cosmos
모듈에서 CosmosClient
형식을 가져옵니다.
import { CosmosClient } from '@azure/cosmos'
CosmosClient
및 에뮬레이터의 자격 증명을 사용하여 새 클라이언트 인스턴스를 만듭니다.
const cosmosClient = new CosmosClient({
endpoint: 'https://localhost:8081/',
key: 'C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw=='
})
Databases.createIfNotExists
및 Containers.createIfNotExists
를 사용하여 데이터베이스 및 컨테이너를 만듭니다.
const { database } = await cosmosClient.databases.createIfNotExists({
id: 'cosmicworks',
throughput: 400
})
const { container } = await database.containers.createIfNotExists({
id: 'products',
partitionKey: {
paths: [
'/id'
]
}
})
Items.upsert
를 사용하여 새 항목을 upsert합니다.
const item = {
id: '68719518371',
name: 'Kiama classic surfboard'
}
container.items.upsert(item)
Node.js 애플리케이션을 실행합니다.
node app.js
Warning
SSL 오류가 발생하면 애플리케이션에 대해 TLS/SSL을 사용하지 않도록 설정해야 할 수 있습니다. 이 오류는 일반적으로 컨테이너에서 Azure Cosmos DB 에뮬레이터를 사용하여 로컬 컴퓨터에서 개발하고 컨테이너의 SSL 인증서를 가져오지 않은 경우에 발생합니다. 이 문제를 해결하려면 클라이언트를 만들기 전에 TLS/SSL 유효성 검사를 사용하지 않도록 애플리케이션의 옵션을 구성합니다.
process.env.NODE_TLS_REJECT_UNAUTHORIZED = 0
MongoDB .NET 드라이버 를 사용하여 .NET 애플리케이션에서 에뮬레이터에 연결합니다.
빈 폴더에서 시작합니다.
새 .NET 콘솔 애플리케이션 만들기
dotnet new console
NuGet에서 MongoDB.Driver
패키지를 추가합니다.
dotnet add package MongoDB.Driver
Program.cs 파일을 엽니다.
파일 내의 기존 콘텐츠를 삭제합니다.
MongoDB.Driver
네임스페이스에 using 블록을 추가합니다.
using MongoDB.Driver;
에뮬레이터의 자격 증명을 사용하여 MongoClient
의 새 인스턴스를 만듭니다.
var client = new MongoClient(
"mongodb://localhost:C2y6yDjf5%2FR%2Bob0N8A7Cgv30VRDJIWEHLM%2B4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw%2FJw%3D%3D@localhost:10255/admin?ssl=true&retrywrites=false"
);
GetDatabase
및 GetCollection<>
을 사용하여 데이터베이스 및 컨테이너를 가져옵니다.
var database = client.GetDatabase("cosmicworks");
var collection = database.GetCollection<dynamic>("products");
InsertOneAsync
를 사용하여 XXX에서 새 항목을 만듭니다.
var item = new
{
name = "Kiama classic surfboard"
};
await collection.InsertOneAsync(item);
.NET 애플리케이션을 실행합니다.
dotnet run
MongoDB Python 드라이버 를 사용하여 Python 애플리케이션에서 에뮬레이터에 연결합니다.
빈 폴더에서 시작합니다.
Python 패키지 인덱스에서 pymongo
패키지를 가져옵니다.
pip install pymongo
app.py 파일을 만듭니다.
os
, sys
및 pymongo
모듈을 가져옵니다.
import pymongo
에뮬레이터의 자격 증명을 사용하여 새 MongoClient
를 만듭니다.
client = pymongo.MongoClient(
host=(
"mongodb://localhost:C2y6yDjf5%2FR%2Bob0N8A7Cgv30VRDJIWEHLM%2B4QDU5DE2"
"nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw%2FJw%3D%3D@localhost:10255/a"
"dmin?ssl=true"
),
tls=True,
)
list_database_names
및 list_collection_names
를 CreateDatabase
및 CreateCollection
사용자 지정 명령과 함께 사용하여 새 데이터베이스 및 컨테이너를 만듭니다.
db = client["cosmicworks"]
if "cosmicworks" not in client.list_database_names():
db.command(
{
"customAction": "CreateDatabase",
"offerThroughput": 400,
}
)
collection = db["products"]
if "products" not in db.list_collection_names():
db.command({"customAction": "CreateCollection", "collection": "products"})
update_one
를 사용하여 컨테이너에 새 항목을 만듭니다.
item = {"id": "68719518371", "name": "Kiama classic surfboard"}
collection.update_one(
filter={"id": item["id"]}, update={"$set": item}, upsert=True
)
Python 애플리케이션을 실행합니다.
python app.py
MongoDB Node.js 드라이버 를 사용하여 Node.js/JavaScript 애플리케이션에서 에뮬레이터에 연결합니다.
빈 폴더에서 시작합니다.
새 모듈을 초기화합니다.
npm init es6 --yes
노드 패키지 관리자에서 mongodb
패키지를 설치합니다.
npm install --save mongodb
app.js 파일을 만듭니다.
mongodb
모듈에서 MongoClient
형식을 가져옵니다.
import { MongoClient } from 'mongodb'
MongoClient
및 에뮬레이터의 자격 증명을 사용하여 새 클라이언트 인스턴스를 만듭니다. connect
를 사용하여 에뮬레이터에 연결합니다.
const client = new MongoClient(
'mongodb://localhost:C2y6yDjf5%2FR%2Bob0N8A7Cgv30VRDJIWEHLM%2B4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw%2FJw%3D%3D@localhost:10255/admin?ssl=true&retrywrites=false'
)
await client.connect()
db
및 collection
를 사용하여 데이터베이스 및 컨테이너를 만듭니다.
const database = client.db('cosmicworks')
const collection = database.collection('products')
insertOne
을 사용하여 새 항목을 만듭니다.
const item = {
name: 'Kiama classic surfboard'
}
await collection.insertOne(item)
Node.js 애플리케이션을 실행합니다.
node app.js
Warning
SSL 오류가 발생하면 애플리케이션에 대해 TLS/SSL을 사용하지 않도록 설정해야 할 수 있습니다. 이 오류는 일반적으로 컨테이너에서 Azure Cosmos DB 에뮬레이터를 사용하여 로컬 컴퓨터에서 개발하고 컨테이너의 SSL 인증서를 가져오지 않은 경우에 발생합니다. 이 문제를 해결하려면 클라이언트를 만들기 전에 TLS/SSL 유효성 검사를 사용하지 않도록 애플리케이션의 옵션을 구성합니다.
const client = new MongoClient(
...,
{ tlsAllowInvalidCertificates: true }
)
Apache Cassandra .NET 드라이버 를 사용하여 .NET 애플리케이션에서 에뮬레이터에 연결합니다.
빈 폴더에서 시작합니다.
새 .NET 콘솔 애플리케이션 만들기
dotnet new console
NuGet에서 CassandraCSharpDriver
패키지를 추가합니다.
dotnet add package CassandraCSharpDriver
Program.cs 파일을 엽니다.
파일 내의 기존 콘텐츠를 삭제합니다.
Cassandra
네임스페이스에 using 블록을 추가합니다.
using Cassandra;
에뮬레이터의 자격 증명을 사용하여 Cluster
의 새 인스턴스를 만듭니다. Connect
를 사용하여 새 세션을 만듭니다.
var options = new SSLOptions(
sslProtocol: System.Security.Authentication.SslProtocols.Tls12,
checkCertificateRevocation: true,
remoteCertValidationCallback: (_, _, _, policyErrors) => policyErrors == System.Net.Security.SslPolicyErrors.None);
using var cluster = Cluster.Builder()
.WithCredentials(
username: "localhost",
password: "C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw=="
)
.WithPort(
port: 10350
)
.AddContactPoint(
address: "localhost"
)
.WithSSL(
sslOptions: options
)
.Build();
using var session = cluster.Connect();
PrepareAsync
및 ExecuteAsync
를 사용하여 새 데이터베이스 및 컨테이너를 만듭니다.
var createKeyspace = await session.PrepareAsync("CREATE KEYSPACE IF NOT EXISTS cosmicworks WITH replication = {'class':'basicclass', 'replication_factor': 1};");
await session.ExecuteAsync(createKeyspace.Bind());
var createTable = await session.PrepareAsync("CREATE TABLE IF NOT EXISTS cosmicworks.products (id text PRIMARY KEY, name text)");
await session.ExecuteAsync(createTable.Bind());
ExecuteAsync
를 사용하여 테이블에 새 항목을 만듭니다. Bind
를 사용하여 항목에 속성을 할당합니다.
var item = new
{
id = "68719518371",
name = "Kiama classic surfboard"
};
var createItem = await session.PrepareAsync("INSERT INTO cosmicworks.products (id, name) VALUES (?, ?)");
var createItemStatement = createItem.Bind(item.id, item.name);
await session.ExecuteAsync(createItemStatement);
.NET 애플리케이션을 실행합니다.
dotnet run
Apache Cassandra Python 드라이버 를 사용하여 Python 애플리케이션에서 에뮬레이터에 연결합니다.
빈 폴더에서 시작합니다.
Python 패키지 인덱스에서 cassandra-driver
패키지를 가져옵니다.
pip install cassandra-driver
app.py 파일을 만듭니다.
ssl
모듈에서 PROTOCOL_TLS_CLIENT
, SSLContext
및 CERT_NONE
을 가져옵니다. 그런 다음 cassandra.cluster
모듈에서 Cluster
를 가져옵니다. 마지막으로 cassandra.auth
모듈에서 PlainTextAuthProvider
를 가져옵니다.
from ssl import PROTOCOL_TLS_CLIENT, SSLContext, CERT_NONE
from cassandra.cluster import Cluster
from cassandra.auth import PlainTextAuthProvider
SSLContext
를 사용하여 새 TLS/SSL 컨텍스트 변수를 만듭니다. 에뮬레이터의 자체 서명된 인증서를 확인하지 않도록 컨텍스트를 구성합니다.
ssl_context = SSLContext(PROTOCOL_TLS_CLIENT)
ssl_context.check_hostname = False
ssl_context.verify_mode = CERT_NONE
에뮬레이터의 자격 증명, PlainTextAuthProvider
, Cluster
및 cluster.connect()
를 사용하여 새 session
을 만듭니다.
auth_provider = PlainTextAuthProvider(
username="localhost",
password=(
"C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnq"
"yMsEcaGQy67XIw/Jw=="
),
)
cluster = Cluster(
["localhost"],
port="10350",
auth_provider=auth_provider,
ssl_context=ssl_context,
)
session = cluster.connect()
session.execute
를 사용하여 새 키스페이스 및 테이블을 만듭니다.
session.execute(
"CREATE KEYSPACE IF NOT EXISTS cosmicworks WITH replication = {'class':'ba"
"sicclass', 'replication_factor': 1};"
)
session.execute(
"CREATE TABLE IF NOT EXISTS cosmicworks.products (id text PRIMARY KEY, nam"
"e text)"
)
session.execute
를 사용하여 테이블에 새 항목을 만듭니다.
item = {"id": "68719518371", "name": "Kiama classic surfboard"}
session.execute(
"INSERT INTO cosmicworks.products (id, name) VALUES (%s, %s)",
[item["id"], item["name"]],
)
Python 애플리케이션을 실행합니다.
python app.py
Apache Cassandra Node.js 드라이버 를 사용하여 Node.js/JavaScript 애플리케이션에서 에뮬레이터를 사용합니다.
빈 폴더에서 시작합니다.
새 모듈을 초기화합니다.
npm init es6 --yes
노드 패키지 관리자에서 cassandra-driver
패키지를 설치합니다.
npm install --save cassandra-driver
app.js 파일을 만듭니다.
cassandra-driver
모듈에서 Client
형식 및 auth
네임스페이스를 가져옵니다.
import { Client, auth } from 'cassandra-driver'
PlainTextAuthProvider
를 사용하여 에뮬레이터의 자격 증명에 대한 새 개체를 만듭니다. Client
및 자격 증명을 사용하여 에뮬레이터에 연결합니다.
const credentials = new auth.PlainTextAuthProvider(
'localhost',
'C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw=='
)
const client = new Client({
contactPoints: [
'localhost:10350'
],
authProvider: credentials,
localDataCenter: 'South Central US'
})
execute
를 사용하여 서버 쪽에서 명령을 실행하여 키스페이스 및 테이블 을 만듭니다.
await client.execute(
'CREATE KEYSPACE IF NOT EXISTS cosmicworks WITH replication = {\'class\':\'basicclass\', \'replication_factor\': 1};'
)
await client.execute(
'CREATE TABLE IF NOT EXISTS cosmicworks.products (id text PRIMARY KEY, name text)'
)
execute
를 다시 사용하여 매개 변수가 있는 새 항목을 만듭니다.
const item = {
id: '68719518371',
name: 'Kiama classic surfboard'
}
await client.execute(
'INSERT INTO cosmicworks.products (id, name) VALUES (?, ?)',
[
item.id,
item.name
]
)
Node.js 애플리케이션을 실행합니다.
node app.js
Warning
SSL 오류가 발생하면 애플리케이션에 대해 TLS/SSL을 사용하지 않도록 설정해야 할 수 있습니다. 이 오류는 일반적으로 컨테이너에서 Azure Cosmos DB 에뮬레이터를 사용하여 로컬 컴퓨터에서 개발하고 컨테이너의 SSL 인증서를 가져오지 않은 경우에 발생합니다. 이 문제를 해결하려면 TLS/SSL 유효성 검사를 사용하지 않도록 클라이언트를 구성합니다.
const client = new Client({
...,
...,
...,
sslOptions: {
rejectUnauthorized: false
}
})
Important
시작하기 전에 Apache Gremlin용 API를 사용하려면 에뮬레이터에서 리소스를 만들어야 합니다. db1
이라는 데이터베이스와 coll1
이라는 컨테이너를 만듭니다. 처리량 설정은 이 가이드와 관련이 없으며 원하는 만큼 낮게 설정할 수 있습니다.
Apache Gremlin .NET 드라이버 를 사용하여 .NET 애플리케이션에서 에뮬레이터에 연결합니다.
빈 폴더에서 시작합니다.
새 .NET 콘솔 애플리케이션 만들기
dotnet new console
NuGet에서 Gremlin.Net
패키지를 추가합니다.
dotnet add package Gremlin.Net
Program.cs 파일을 엽니다.
파일 내의 기존 콘텐츠를 삭제합니다.
Gremlin.Net.Driver
네임스페이스에 using 블록을 추가합니다.
using Gremlin.Net.Driver;
에뮬레이터의 자격 증명을 사용하여 GremlinServer
및 GremlinClient
의 새 인스턴스를 만듭니다.
var server = new GremlinServer(
hostname: "localhost",
port: 8901,
username: "/dbs/db1/colls/coll1",
password: "C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw=="
);
using var client = new GremlinClient(
gremlinServer: server,
messageSerializer: new Gremlin.Net.Structure.IO.GraphSON.GraphSON2MessageSerializer()
);
SubmitAsync
를 사용하여 그래프를 정리합니다.
await client.SubmitAsync(
requestScript: "g.V().drop()"
);
SubmitAsync
를 다시 사용하여 지정된 매개 변수로 새 항목을 그래프에 추가합니다.
await client.SubmitAsync(
requestScript: "g.addV('product').property('id', prop_id).property('name', prop_name)",
bindings: new Dictionary<string, object>
{
{ "prop_id", "68719518371" },
{ "prop_name", "Kiama classic surfboard" }
}
);
.NET 애플리케이션을 실행합니다.
dotnet run
Apache Gremlin Python 드라이버 를 사용하여 Python 애플리케이션에서 에뮬레이터에 연결합니다.
빈 폴더에서 시작합니다.
Python 패키지 인덱스에서 gremlinpython
패키지를 가져옵니다.
pip install gremlinpython
app.py 파일을 만듭니다.
gremlin_python.driver
모듈에서 client
를 가져옵니다.
from gremlin_python.driver import client
에뮬레이터의 자격 증명을 사용하여 새 Client
를 만듭니다.
client = client.Client(
url="ws://localhost:8901/",
traversal_source="g",
username="/dbs/db1/colls/coll1",
password=(
"C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnq"
"yMsEcaGQy67XIw/Jw=="
),
)
client.submit
를 사용하여 그래프를 정리합니다.
client.submit(message="g.V().drop()")
client.submit
를 다시 사용하여 지정된 매개 변수로 새 항목을 그래프에 추가합니다.
client.submit(
message=(
"g.addV('product').property('id', prop_id).property('name', prop_name)"
),
bindings={
"prop_id": "68719518371",
"prop_name": "Kiama classic surfboard",
},
)
Python 애플리케이션을 실행합니다.
python app.py
Apache Gremlin Node.js 드라이버 를 사용하여 Node.js/JavaScript 애플리케이션에서 에뮬레이터를 사용합니다.
빈 폴더에서 시작합니다.
새 모듈을 초기화합니다.
npm init es6 --yes
노드 패키지 관리자에서 gremlin
패키지를 설치합니다.
npm install --save gremlin
app.js 파일을 만듭니다.
gremlin
모듈을 가져옵니다.
import gremlin from 'gremlin'
PlainTextSaslAuthenticator
를 사용하여 에뮬레이터의 자격 증명에 대한 새 개체를 만듭니다. Client
및 자격 증명을 사용하여 에뮬레이터에 연결합니다.
const credentials = new gremlin.driver.auth.PlainTextSaslAuthenticator(
'/dbs/db1/colls/coll1',
'C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw=='
)
const client = new gremlin.driver.Client(
'ws://localhost:8901/',
{
credentials,
traversalsource: 'g',
rejectUnauthorized: false,
mimeType: 'application/vnd.gremlin-v2.0+json'
}
)
client.open()
이미 데이터가 있는 경우 submit
을 사용하여 서버 쪽에서 명령을 실행하여 그래프를 지웁니다.
await client.submit('g.V().drop()')
submit
를 다시 사용하여 지정된 매개 변수로 새 항목을 그래프에 추가합니다.
await client.submit(
'g.addV(\'product\').property(\'id\', prop_id).property(\'name\', prop_name)', {
prop_id: '68719518371',
prop_name: 'Kiama classic surfboard'
}
)
Node.js 애플리케이션을 실행합니다.
node app.js
Azure Tables SDK for .NET 를 사용하여 .NET 애플리케이션에서 에뮬레이터에 연결합니다.
빈 폴더에서 시작합니다.
새 .NET 콘솔 애플리케이션 만들기
dotnet new console
NuGet에서 Azure.Data.Tables
패키지를 추가합니다.
dotnet add package Azure.Data.Tables
Program.cs 파일을 엽니다.
파일 내의 기존 콘텐츠를 삭제합니다.
Azure.Data.Tables
네임스페이스에 using 블록을 추가합니다.
using Azure.Data.Tables;
에뮬레이터의 자격 증명을 사용하여 TableServiceClient
의 새 인스턴스를 만듭니다.
var serviceClient = new TableServiceClient(
connectionString: "DefaultEndpointsProtocol=http;AccountName=localhost;AccountKey=C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw==;TableEndpoint=http://localhost:8902/;"
);
GetTableClient
를 사용하여 테이블 이름으로 TableClient
의 새 인스턴스를 만듭니다. 그런 다음 CreateIfNotExistsAsync
를 사용하여 테이블이 존재하는지 확인합니다.
var client = serviceClient.GetTableClient(
tableName: "cosmicworksproducts"
);
await client.CreateIfNotExistsAsync();
항목에 대한 새 record
형식을 만듭니다.
public record Product : Azure.Data.Tables.ITableEntity
{
public required string RowKey { get; set; }
public required string PartitionKey { get; set; }
public required string Name { get; init; }
public Azure.ETag ETag { get; set; }
public DateTimeOffset? Timestamp { get; set; }
}
UpsertEntityAsync
를 사용하고 Replace
모드를 사용하여 테이블에 새 항목을 만듭니다.
var item = new Product
{
RowKey = "68719518371",
PartitionKey = "Surfboards",
Name = "Kiama classic surfboard",
Timestamp = DateTimeOffset.Now
};
await client.UpsertEntityAsync(
entity: item,
mode: TableUpdateMode.Replace
);
.NET 애플리케이션을 실행합니다.
dotnet run
Azure Tables Python SDK 를 사용하여 Python 애플리케이션에서 에뮬레이터에 연결합니다.
빈 폴더에서 시작합니다.
Python 패키지 인덱스에서 azure-data-tables
패키지를 가져옵니다.
pip install azure-data-tables
app.py 파일을 만듭니다.
azure.data.tables
모듈에서 TableServiceClient
및 UpdateMode
를 가져옵니다.
from azure.data.tables import TableServiceClient, UpdateMode
TableServiceClient.from_connection_string
을 사용하여 새 서비스 수준 클라이언트를 만듭니다.
service = TableServiceClient.from_connection_string(
conn_str=(
"DefaultEndpointsProtocol=http;AccountName=localhost;AccountKey=C2y6yD"
"jf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEca"
"GQy67XIw/Jw==;TableEndpoint=http://localhost:8902/;"
)
)
create_table_if_not_exists
를 사용하여 새 테이블 수준 클라이언트를 만듭니다.
client = service.create_table_if_not_exists(table_name="cosmicworksproducts")
upsert_entity
를 사용하여 컨테이너에 새 항목을 만듭니다.
item = {
"PartitionKey": "68719518371",
"RowKey": "Surfboards",
"name": "Kiama classic surfboard",
}
client.upsert_entity(entity=item, mode=UpdateMode.REPLACE)
Python 애플리케이션을 실행합니다.
python app.py
Azure Tables JavaScript SDK 를 사용하여 Node.js/JavaScript 애플리케이션에서 에뮬레이터를 사용합니다.
빈 폴더에서 시작합니다.
새 모듈을 초기화합니다.
npm init es6 --yes
노드 패키지 관리자에서 @azure/data-tables
패키지를 설치합니다.
npm install --save @azure/data-tables
app.js 파일을 만듭니다.
@azure/data-tables
모듈에서 TableClient
형식을 가져옵니다.
import { TableClient } from '@azure/data-tables'
TableClient.fromConnectionString
및 에뮬레이터의 연결 스트링을 사용하여 새 클라이언트 인스턴스를 만듭니다.
const client = TableClient.fromConnectionString(
'DefaultEndpointsProtocol=http;AccountName=localhost;AccountKey=C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw==;TableEndpoint=http://localhost:8902/;',
'cosmicworksproducts'
)
테이블이 아직 없는 경우 createTable
을 사용하여 새로 만듭니다.
await client.createTable()
upsertEntity
를 사용하여 항목을 만들거나 바꿉니다.
const item = {
partitionKey: '68719518371',
rowKey: 'Surfboards',
name: 'Kiama classic surfboard'
}
await client.upsertEntity(
item,
'Replace'
)
Node.js 애플리케이션을 실행합니다.
node app.js
Warning
SSL 오류가 발생하면 애플리케이션에 대해 TLS/SSL을 사용하지 않도록 설정해야 할 수 있습니다. 이 오류는 일반적으로 컨테이너에서 Azure Cosmos DB 에뮬레이터를 사용하여 로컬 컴퓨터에서 개발하고 컨테이너의 SSL 인증서를 가져오지 않은 경우에 발생합니다. 이 문제를 해결하려면 TLS/SSL 유효성 검사를 사용하지 않도록 클라이언트를 구성합니다.
const client = TableClient.fromConnectionString(
...,
...,
{
allowInsecureConnection: true
}
)
GitHub Actions CI 워크플로에서 에뮬레이터 사용
애플리케이션의 유효성을 자동으로 검사하는 연속 통합 워크로드를 실행하려면 선택한 프레임워크의 테스트 도구 모음과 함께 Azure Cosmos DB 에뮬레이터를 사용합니다. Azure Cosmos DB 에뮬레이터는 GitHub 작업의 호스트된 실행기의 windows-latest
변형에 미리 설치되어 있습니다.
.NET용 기본 제공 테스트 드라이버와 MSTest , NUnit , XUnit 과 같은 테스트 프레임워크를 사용하여 테스트 도구 모음을 실행합니다.
애플리케이션에 대한 단위 테스트 도구 모음이 예상대로 작동하는지 확인합니다.
dotnet test
.github/workflows/ci.yml
파일에서 GitHub 리포지토리에 새 워크플로를 만듭니다.
워크플로에 PowerShell을 사용하여 Azure Cosmos DB 에뮬레이터를 시작하고 단위 테스트 도구 모음을 실행하는 작업을 추가합니다.
name: Continuous Integration
on:
push:
branches:
- main
jobs:
unit_tests:
name: Run .NET unit tests
runs-on: windows-latest
steps:
- name: Checkout (GitHub)
uses: actions/checkout@v3
- name: Start Azure Cosmos DB emulator
run: |
Write-Host "Launching Cosmos DB Emulator"
Import-Module "$env:ProgramFiles\Azure Cosmos DB Emulator\PSModules\Microsoft.Azure.CosmosDB.Emulator"
Start-CosmosDbEmulator
- name: Run .NET tests
run: dotnet test
참고 항목
다양한 인수 또는 PowerShell 명령을 사용하여 명령줄에서 에뮬레이터를 시작합니다. 자세한 내용은 에뮬레이터 명령줄 인수 를 참조하세요.
pytest
를 사용하여 Python 애플리케이션 및 데이터베이스 작업을 테스트합니다.
애플리케이션에 대한 단위 테스트 도구 모음이 예상대로 작동하는지 확인합니다.
pip install -U pytest
pytest
.github/workflows/ci.yml
파일에서 GitHub 리포지토리에 새 워크플로를 만듭니다.
워크플로에 PowerShell을 사용하여 Azure Cosmos DB 에뮬레이터를 시작하고 단위 테스트 도구 모음을 실행하는 작업을 추가합니다.
name: Continuous Integration
on:
push:
branches:
- main
jobs:
unit_tests:
name: Run Python unit tests
runs-on: windows-latest
steps:
- name: Checkout (GitHub)
uses: actions/checkout@v3
- name: Start Azure Cosmos DB emulator
run: |
Write-Host "Launching Cosmos DB Emulator"
Import-Module "$env:ProgramFiles\Azure Cosmos DB Emulator\PSModules\Microsoft.Azure.CosmosDB.Emulator"
Start-CosmosDbEmulator
- name: Install test runner
run: pip install pytest
- name: Run Python tests
run: pytest
참고 항목
다양한 인수 또는 PowerShell 명령을 사용하여 명령줄에서 에뮬레이터를 시작합니다. 자세한 내용은 에뮬레이터 명령줄 인수 를 참조하세요.
mocha
를 사용하여 Node.js 애플리케이션 및 해당 데이터베이스 수정 사항을 테스트합니다.
애플리케이션에 대한 단위 테스트 도구 모음이 예상대로 작동하는지 확인합니다.
npm install --global mocha
mocha
.github/workflows/ci.yml
파일에서 GitHub 리포지토리에 새 워크플로를 만듭니다.
워크플로에 PowerShell을 사용하여 Azure Cosmos DB 에뮬레이터를 시작하고 단위 테스트 도구 모음을 실행하는 작업을 추가합니다.
name: Continuous Integration
on:
push:
branches:
- main
jobs:
unit_tests:
name: Run Node.js unit tests
runs-on: windows-latest
steps:
- name: Checkout (GitHub)
uses: actions/checkout@v3
- name: Start Azure Cosmos DB emulator
run: |
Write-Host "Launching Cosmos DB Emulator"
Import-Module "$env:ProgramFiles\Azure Cosmos DB Emulator\PSModules\Microsoft.Azure.CosmosDB.Emulator"
Start-CosmosDbEmulator
- name: Install test runner
run: npm install --global mocha
- name: Run Node.js tests
run: mocha
참고 항목
다양한 인수 또는 PowerShell 명령을 사용하여 명령줄에서 에뮬레이터를 시작합니다. 자세한 내용은 에뮬레이터 명령줄 인수 를 참조하세요.
다음 단계