teslim edebilecek bir ortama sahip olmak Amazon Adaçayı Yapıcı notebook bulut sunucuları, veri bilimcilerin ve iş analistlerinin kurumsal ihtiyaçlara verimli bir şekilde yanıt vermesini sağlar. Veriler, bir kuruluşun can damarıdır ve bu verilerin verimli bir şekilde analiz edilmesi, işletmeler için faydalı bilgiler sağlar. Kuruluşların karşılaştığı yaygın bir sorun, geliştirme ekiplerinin AWS hizmetlerini başlatmasına olanak tanıyan otomatik bir model oluşturmaktır. Kuruluşlar, geliştiricilerinin kaynakları ihtiyaç duyduklarında, ancak merkezi ve güvenli bir şekilde başlatmalarını sağlamak ister.
Bu gönderi, aşağıdakiler de dahil olmak üzere AWS hizmetlerini kullanarak SageMaker örnek not defterlerinin yönetiminin nasıl merkezileştirileceğini gösterir. AWS CloudFormation, AWS Sunucusuz Uygulama Modeli (AWS SAM), AWS Hizmet Kataloğu, Amazon EventBridge, AWS Systems Manager Parametre Deposu, Amazon API Ağ Geçidi, ve AWS Lambda. SageMaker dizüstü bilgisayarlarını son kullanıcılara satma sürecini otomatikleştirmek için bu AWS hizmetlerinin nasıl kullanılacağını anlatıyoruz.
Çözüme genel bakış
Çözümümüzde, bir dizüstü bilgisayar kullanıcısı, AWS Hizmet Kataloğu'nu kullanarak bir dizüstü bilgisayar örneği ister. İstek, dizüstü bilgisayar örneğini teslim eden AWS CloudFormation tarafından işlenir. EventBridge, dizüstü bilgisayar bulut sunucusu kaynak sağlama işleminin tamamlanması için AWS Service Catalog API'sini izler. EventBridge'deki olay tabanlı bir kural, önceden belirlenmiş URL'yi döndüren bir Lambda işlevi çalıştıran Lambda olay işlemcisini çağırır.
Aşağıdaki mimari diyagram, CloudFormation şablonlarında tanımlandığı gibi altyapı durumunu gösterir.
İşlem aşağıdaki adımlardan oluşur:
- Bir kullanıcı, AWS Service Catalog konsolu aracılığıyla yeni bir not defteri ister.
- AWS Service Catalog, bir CloudFormation yığını başlatır.
- AWS CloudFormation, SageMaker not defterini başlattı.
- Bir SageMaker not defteri şimdi çalışıyor.
- Yeni bir AWS Service Catalog ürünü başlatıldığında bir EventBridge işlevi tetiklenir.
- The Amazon Bulut İzleme event, önceden belirlenmiş URL'yi ve kullanıcıya özel bir SSM parametresini oluşturan bir Lambda işlevini çağırır.
- Bir kullanıcı, önceden belirlenmiş yeni bir URL ister.
- Bir Lambda işlevi, önceden belirlenmiş yeni bir URL oluşturur ve kullanıcının SSM parametresini yeni URL ile günceller.
Önkoşullar
Bu çözümü uygulamak için aşağıdaki ön koşullara sahip olmanız gerekir:
AWS CloudFormation ile kaynakları dağıtın
AWS CloudFormation ile kaynaklarınızı oluşturmak için aşağıdaki adımları tamamlayın:
- dağıtmak
s3-iam-config
CloudFormation şablonu:
aws cloudformation create-stack --stack-name s3-iam-config --template-body file://templates/s3-iam-config.yml --parameters file://parameters/s3-iam-params.json --capabilities CAPABILITY_NAMED_IAM
Çıktı aşağıdaki kod gibi görünmelidir:
{ "StackId": "arn:aws:cloudformation:us-east-1:123456789012:stack/s3-iam-config/9be9f990-0909-11eb-811c-0a78092beb51"
}
Şablon oluşturur Amazon Basit Depolama Hizmeti (Amazon S3) kovası.
- Önceki adımda oluşturulan S3 klasör adını almak için aşağıdaki komutu çalıştırın:
aws cloudformation describe-stacks --stack-name s3-iam-config --query "Stacks[0].Outputs[?OutputKey=='S3BucketName'].OutputValue" --output text
Çıktı aşağıdaki gibi görünmelidir:
s3-iam-config-s3bucket-1p85zr5051d86
- Önceki adımın çıktısını kullanarak aşağıdaki komutu çalıştırın (paket adını güncelleyin):
aws s3 cp templates/sm-notebook.yml s3://<bucket_name>/sm-notebook.yml
Çıktı aşağıdaki gibi görünmelidir:
upload: templates/sm-notebook.yml to s3://s3-iam-config-s3bucket-1p85zr5051d86/sm-notebook.yml
- Açın
parameters/service-catalog-params.json
dosya ve güncelleme S3BucketName
önceki adımdaki paket adına parametre. Güncelle UserIAMPrincipal
bu demo için kullandığınız IAM rolünün ARN'si ile.
[ { "ParameterKey" : "NotebookInstanceType", "ParameterValue" : "ml.t2.medium" }, { "ParameterKey" : "S3IAMConfigStackName", "ParameterValue" : "s3-iam-config" }, { "ParameterKey" : "ServiceCatalogTemplateName", "ParameterValue" : "sm-notebook.yml" }, { "ParameterKey" : "S3BucketName", "ParameterValue" : "<input_your_bucket_name>" }, { "ParameterKey" : "UserIAMPrincipal", "ParameterValue" : "<input_your_iam_principal_arn>" }
]
- dağıtmak
service-catalog
CloudFormation şablonu:
aws cloudformation create-stack --stack-name service-catalog-config --template-body file://templates/service-catalog.yml --parameters file://parameters/service-catalog-params.json --capabilities CAPABILITY_NAMED_IAM
Çıktı aşağıdaki gibi görünmelidir:
{ "StackId": "arn:aws:cloudformation:us-east-1:123456789012:stack/service-catalog-config/fb29c5e0-28a0-11ec-8337-123f746ae8a3"
}
AWS SAM ile kaynakları dağıtın
AWS SAM ile kaynakları dağıtmak için aşağıdaki adımları tamamlayın:
- Dizininizi şu şekilde değiştirin:
lambda
dizin:
- Uygulamayı oluşturun:
Çıktı aşağıdaki gibi görünmelidir:
Built Artifacts : .aws-sam/build
Built Template : .aws-sam/build/template.yaml Commands you can use next
=========================
[*] Invoke Function: sam local invoke
[*] Test Function in the Cloud: sam sync --stack-name {stack-name} --watch
[*] Deploy: sam deploy --guided
- Uygulamayı dağıtın:
- CLI'deki soruları aşağıdaki kodda gösterildiği gibi yanıtlayın:
Configuring SAM deploy
====================== Looking for config file [samconfig.toml] : Found Reading default arguments : Success Setting default arguments for 'sam deploy' ========================================= Stack Name [sam-app]: sam-app AWS Region [us-east-1]: us-east-1 Parameter EventBridgeFunctionName [EventBridgeFunction]: EventBridgeFunction Parameter EventRuleName [SvcCatalogEventRule]: SvcCatalogEventRule Parameter RefreshFunctionName [RefreshURLFunction]: RefreshURLFunction #Shows you resources changes to be deployed and require a 'Y' to initiate deploy Confirm changes before deploy [y/N]: N #SAM needs permission to be able to create roles to connect to the resources in your template Allow SAM CLI IAM role creation [Y/n]: Y #Preserves the state of previously provisioned resources when an operation fails Disable rollback [y/N]: N EventBridgeFunction may not have authorization defined, Is this okay? [y/N]: Y RefreshURLFunction may not have authorization defined, Is this okay? [y/N]: Y Save arguments to configuration file [Y/n]: Y SAM configuration file [samconfig.toml]: samconfig.toml SAM configuration environment [default]: dev
Çıktı aşağıdaki gibi görünmelidir:
Looking for resources needed for deployment: Creating the required resources... Successfully created! Managed S3 bucket: aws-sam-cli-managed-default-samclisourcebucket-1f4i68wsmouhw A different default S3 bucket can be set in samconfig.toml Saved arguments to config file Running 'sam deploy' for future deployments will use the parameters saved above. The above parameters can be changed by modifying samconfig.toml Learn more about samconfig.toml syntax at https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-cli-config.html Uploading to sam-app/6f3e2f13cfdca08133238f77fc2c667b 9425988 / 9425988 (100.00%)
Uploading to sam-app/b153fd4be66b581361f7d46efae25f18 9425968 / 9425968 (100.00%) Deploying with following values =============================== Stack name : sam-app Region : us-east-1 Confirm changeset : False Disable rollback : False Deployment s3 bucket : aws-sam-cli-managed-default-samclisourcebucket-1f4i68wsmouhw Capabilities : ["CAPABILITY_IAM"] Parameter overrides : {"EventBridgeFunctionName": "EventBridgeFunction", "EventRuleName": "SvcCatalogEventRule", "RefreshFunctionName": "RefreshURLFunction"} Signing Profiles : {} Initiating deployment
=====================
Uploading to sam-app/c82cdea2bfbc2abc6520a97fce4c8a8b.template 6754 / 6754 (100.00%) Waiting for changeset to be created.. CloudFormation stack changeset
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
Operation LogicalResourceId ResourceType Replacement -----------------------------------------------------------------------------------------------------------------------------------------------------------------
+ Add EventBridgeFunctionHelloWorldPermissio AWS::Lambda::Permission N/A nProd + Add EventBridgeFunctionRole AWS::IAM::Role N/A + Add EventBridgeFunction AWS::Lambda::Function N/A + Add PermissionForEventsToInvokeLambda AWS::Lambda::Permission N/A + Add RefreshURLFunctionHelloWorldPermission AWS::Lambda::Permission N/A Prod + Add RefreshURLFunctionRole AWS::IAM::Role N/A + Add RefreshURLFunction AWS::Lambda::Function N/A + Add ServerlessRestApiDeploymentb762875163 AWS::ApiGateway::Deployment N/A + Add ServerlessRestApiProdStage AWS::ApiGateway::Stage N/A + Add ServerlessRestApi AWS::ApiGateway::RestApi N/A + Add SvcCatalogEventRule AWS::Events::Rule N/A ----------------------------------------------------------------------------------------------------------------------------------------------------------------- Changeset created successfully. arn:aws:cloudformation:us-east-1:123456789012:changeSet/samcli-deploy1641934511/763fe89c-9c6a-4cef-a1a6-90986d7decfd 2022-01-11 15:55:22 - Waiting for stack create/update to complete CloudFormation events from stack operations
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
ResourceStatus ResourceType LogicalResourceId ResourceStatusReason -----------------------------------------------------------------------------------------------------------------------------------------------------------------
CREATE_IN_PROGRESS AWS::IAM::Role RefreshURLFunctionRole - CREATE_IN_PROGRESS AWS::IAM::Role EventBridgeFunctionRole - CREATE_IN_PROGRESS AWS::IAM::Role EventBridgeFunctionRole Resource creation Initiated CREATE_IN_PROGRESS AWS::IAM::Role RefreshURLFunctionRole Resource creation Initiated CREATE_COMPLETE AWS::IAM::Role EventBridgeFunctionRole - CREATE_IN_PROGRESS AWS::Lambda::Function EventBridgeFunction - CREATE_IN_PROGRESS AWS::Lambda::Function EventBridgeFunction Resource creation Initiated CREATE_COMPLETE AWS::IAM::Role RefreshURLFunctionRole - CREATE_COMPLETE AWS::Lambda::Function EventBridgeFunction - CREATE_IN_PROGRESS AWS::Lambda::Function RefreshURLFunction - CREATE_IN_PROGRESS AWS::Lambda::Function RefreshURLFunction Resource creation Initiated CREATE_IN_PROGRESS AWS::Events::Rule SvcCatalogEventRule - CREATE_IN_PROGRESS AWS::Events::Rule SvcCatalogEventRule Resource creation Initiated CREATE_COMPLETE AWS::Lambda::Function RefreshURLFunction - CREATE_IN_PROGRESS AWS::ApiGateway::RestApi ServerlessRestApi - CREATE_COMPLETE AWS::ApiGateway::RestApi ServerlessRestApi - CREATE_IN_PROGRESS AWS::ApiGateway::RestApi ServerlessRestApi Resource creation Initiated CREATE_IN_PROGRESS AWS::ApiGateway::Deployment ServerlessRestApiDeploymentb762875163 - CREATE_IN_PROGRESS AWS::Lambda::Permission EventBridgeFunctionHelloWorldPermissio - nProd CREATE_IN_PROGRESS AWS::Lambda::Permission RefreshURLFunctionHelloWorldPermission Resource creation Initiated Prod CREATE_IN_PROGRESS AWS::Lambda::Permission EventBridgeFunctionHelloWorldPermissio Resource creation Initiated nProd CREATE_IN_PROGRESS AWS::Lambda::Permission RefreshURLFunctionHelloWorldPermission - Prod CREATE_IN_PROGRESS AWS::ApiGateway::Deployment ServerlessRestApiDeploymentb762875163 Resource creation Initiated CREATE_COMPLETE AWS::ApiGateway::Deployment ServerlessRestApiDeploymentb762875163 - CREATE_IN_PROGRESS AWS::ApiGateway::Stage ServerlessRestApiProdStage - CREATE_IN_PROGRESS AWS::ApiGateway::Stage ServerlessRestApiProdStage Resource creation Initiated CREATE_COMPLETE AWS::Lambda::Permission RefreshURLFunctionHelloWorldPermission - Prod CREATE_COMPLETE AWS::Lambda::Permission EventBridgeFunctionHelloWorldPermissio - nProd CREATE_COMPLETE AWS::ApiGateway::Stage ServerlessRestApiProdStage - CREATE_COMPLETE AWS::Events::Rule SvcCatalogEventRule - CREATE_IN_PROGRESS AWS::Lambda::Permission PermissionForEventsToInvokeLambda - CREATE_IN_PROGRESS AWS::Lambda::Permission PermissionForEventsToInvokeLambda Resource creation Initiated CREATE_COMPLETE AWS::Lambda::Permission PermissionForEventsToInvokeLambda - CREATE_COMPLETE AWS::CloudFormation::Stack sam-app - ----------------------------------------------------------------------------------------------------------------------------------------------------------------- CloudFormation outputs from deployed stack
------------------------------------------------------------------------------------------------------------------------------------------------------------------
Outputs ------------------------------------------------------------------------------------------------------------------------------------------------------------------
Key RefreshURLFunctionIamRole Description Implicit IAM Role created for Hello World function Value arn:aws:lambda:us-east-1:123456789012:function:RefreshURLFunction Key RefreshURLFunctionAPI Description API Gateway endpoint URL for Prod stage for Hello World function Value https://m94bjaurjb.execute-api.us-east-1.amazonaws.com/Prod/refreshurl/ Key RefreshURLFunction Description Hello World Lambda Function ARN Value arn:aws:lambda:us-east-1:123456789012:function:RefreshURLFunction ------------------------------------------------------------------------------------------------------------------------------------------------------------------ Successfully created/updated stack - sam-app in us-east-1
Çözümü test edin
Çözümü dağıttığınıza göre, şimdi iş akışını test edelim.
- AWS Service Catalog konsolunda, altında Yönetim gezinme bölmesinde öğesini seçin. Portfolyolar.
- SageMaker not defterinizi seçin.
- Klinik Ürünü başlat.
- Sayfanın alt kısmında, Ürünü başlat.
Aşağıdaki ekran görüntüsüne benzer bir sayfa görmelisiniz.
- Durumun şu şekilde gösterilmesi için birkaç dakika bekleyin
Available
.
- Terminalinizi açın ve Parameter Store'dan önceden belirlenmiş URL'yi almak için aşağıdaki komutu çalıştırın:
aws ssm get-parameter --name "/SageMaker/Notebooks/Demo-User-Notebook" --query Parameter.Value
Çıktı aşağıdaki gibi görünmelidir:
"https://demo-user-notebook.notebook.us-east-1.sagemaker.aws?authToken=eyJhbGciOiJIUzI1NiJ9.eyJmYXNDcmVkZW50aWFscyI6IkFZQURlSlVvLzJjeEcwQ0xtNHBjTTZFOGM1SUFYd0FCQUJWaGQzTXRZM0o1Y0hSdkxYQjFZbXhwWXkxclpYa0FSRUV3U0ZSdU1rNXJZMUpyWnpWWVlsZFBRbUowTmtadVpGcHZlRlJXUW05SVlWaHdiazFJY25WRWVrTmtlVWRUVUZsak56UnhObWQzVTJGS1dYUm5hVk40VVQwOUFBRUFCMkYzY3kxcmJYTUFTMkZ5YmpwaGQzTTZhMjF6T25WekxXVmhjM1F0TVRvM05qUTNNRGM1TWpRME1UVTZhMlY1TDJJM01ETTNNRE5oTFdVMU5HTXROR1JtWWkxaE1HRTFMVGMyTnpNek1XWXlORGsxT1FDNEFRSUJBSGhlY3J4TGdEdDJaWmRKYk5nd3R4RHJpWmtZQnZUR1cwZWZCWVhaVW1VTTFBRXNiUlBXblloT3hjUWhPUE9jR0FaZUFBQUFmakI4QmdrcWhraUc5dzBCQndhZ2J6QnRBZ0VBTUdnR0NTcUdTSWIzRFFFSEFUQWVCZ2xnaGtnQlpRTUVBUzR3RVFRTUFnMjM1NzZRT1l6azgyc29BZ0VRZ0RzejlwVHd4Q2ZZUHd6SGJvZERIaElRa1BRWjdUUXRxZ2dEaVpkTDBtMnIxaW1jVHp5czJHc0t6T3d2Z2g1cGNSSytVS2ZxTXlnTmVhaHVVd0lBQUFBQURBQUFFQUFBQUFBQUFBQUFBQUFBQUFET3ZoZFMvb01sTE4xZ3hQSFkybklQLy8vLy93QUFBQUVBQUFBQUFBQUFBQUFBQUFFQUFBTmZFc2JYV1RDWXorV0o0S3BwSXhEMkpkMVFzUnZFbW9lS21hZDhvSmNSN0tRMi9CQWd3TTA3YUFOOEN1WE8yc2lLUnpZdjI1YmlLOFYzUDM2d1Fjc3RoS085Ui91TFFzNWk4RytHc3BZSnlNamRsbWdWYTFEd2FZQmd0TUMwcmJMRjZSWXJhcFJtMFArbDVIQWg3bWNyeU9lejZWRVlYTmdJY2FXR0tjZDFwRjQ5bXBLTzNyQW5BSGlCdEVaNCtlSVFYVkJwMmQyV2c4TEFqR0RRYVNyclVBOUhJa3pvaloybm5iVHluY3pLWXlNVjA3Ui8wZmVTZU9jTTBubC9IRHdjWUdyc1RCcDgzM1RVWCtkOGRNRXI4amtpQVAwUTFQRkNrU2h5WS9CU05IalZtWThxd094N05jV3g1ZVpSenl3cm0vWXNZOW5paEt5cWRMaGNIQUhDbXZhWW8yb2lMZ3BGak51WG5udlh1U1UxcmFlRVZMNUlKR1loMVAzRWZnR3huNmlsUTJmVGllQytQdWNmT3dsZWwrSnR5SWNmbVRTeFB0bnE1YW1mVjEycml0Skx5a09WMklEc0YzSEl6RW11SmhYZTBqKzM1dWlITW5BVkFZVm5RbithdWh1K3lVcUNKeWVWU1o2ZWVsYmIwd2tYUGNpOXBkazFMbTFLNUpZcFJuMFoyS1hvSnBxNm52b3pPWkdvNG9jbmVRQWhKODRiYjR6RkdGZ1NOaTdQWEFuMnpDTkZ1S2w0eU9KVldiRDRXMGZGSFc1OE5iUTE5amc5Zlp0czlkVmxKclowSmVrYTJhZi9TaUpoeWdvcDBwQ0pBS0pZZkErVEhTQmdCUTFNUWpyUXV5U25jbnQ4NU5XUW1uVG9PUGJ4bVlyN0JRMllpQlJsekdxSDNuQ0pXN2x4YmNzYUV1c1dFMXB3K0RJc2lLMEV1YVV6anBFWFV0NEt4Zm82T3B3b28vdVcyV0dlSmNQVHk4TkNRYWZlUU1VbXgwaDQ3aDF0UHNIY0hBUjltKzU2c3BzMnJETjl4ZTFUMVdHVDg4a3FFMW5YYzRQeUZNdTVuYXB0UEdUU1B0akpZWDRKKzRsSzlJZzZCNG9qRTNmVEEzUVllSTd0dU9UZG9Vd2R6SkJ4L1NvSjNxU0ZUMWRDZXFDeUcyWUN5cjN0TmFzZlpYNFBBWmU4b1M1QVZTeExkVlVqUkpYcW1DM1ZkNUJPRlFySHpReTZjTkFLNFVOY2tBanh3bUgwbFlNdlFtc3lTODRzcCtLUGdpbXl3eWNDdk5tYWQ1bVltRHRZYVpMU3JCVUZIVzlDS2tTS2pqWWtBWnZ3MXRnS3h5OE9wNjZDRHY3aEZObzNDUWQ3MGpnV0wyamdnU1RIckJ6blJwK2wxQ1VscnNsblNzaGluTDcwbnp4eU02b1NBbm1FdFVscG9yeG1iWGRUbUxld244R1lQS1ZvT0syd1pobXk0TVQzc2xxRlU1enVTU2tBQnp5eURZb3djR3JxemlBTXNDcEZONVhRVk9HNHkzNnlZS3pTU0FVTEppRCtOZFRLeWxJbUFHY3daUUl3TXpoZ25hWitia1h5VmErTWUrYmwxUHBrUXcwMWxMUDZNcExnTGRPbkVKb0RRM0xLc2pLZHlidWx4cmlNK011SEFqRUF3V00zdXpjemZyY1ZWOGNwUzdlUDlBRXluNks5NkNQNFBiVCtYK1VVZERqYXZkR1hrenY3TklkWG4xem9pU0dpIiwiY2lwaGVyVGV4dCI6IkFRSUJBSGhlY3J4TGdEdDJaWmRKYk5nd3R4RHJpWmtZQnZUR1cwZWZCWVhaVW1VTTFBRVRlWjBib1lRWDZSazJ1dzdNREJZY0FBQUFvakNCbndZSktvWklodmNOQVFjR29JR1JNSUdPQWdFQU1JR0lCZ2txaGtpRzl3MEJCd0V3SGdZSllJWklBV1VEQkFFdU1CRUVERjVkR1VSbkt5ZlA4S2dKTVFJQkVJQmJyTkJkSkZEOWhySytrajEvTDRieXMxMlFmR2dxM1pSTVlGa2lwNjJXZGZ2aUhvdkswQ3pKY0VtSUE4akY5cktPRm5ZblFoeHpHdmhxZy84VjU4RjUxbWFKUkJIY0RlUzdjSGRpSkdhOW1MbmZuVzFwQVhoaUp1WlRCdz09Iiwid29ya3NwYWNlTmFtZSI6ImRlbW8tdXNlci1ub3RlYm9vayIsIndvcmtzcGFjZURvbWFpbk5hbWUiOiJkZW1vLXVzZXItbm90ZWJvb2siLCJzdWIiOiIxOTU4ODk2NzE2OTAiLCJleHAiOjE2MzgxNDAyMTQsImlhdCI6MTYzODEzODQxNH0.duv90DKJDan6ZOI_uwgP3sQEtManyMCD61tnhZtI-mY"
EventBridge kuralı
EventBridge, AWS Service Catalog API için bir API yanıtını işlemek üzere bir olay kuralıyla yapılandırılır. Bu kural, tetiklenmiş bir eylem olarak önceden belirlenmiş bir URL yanıtı döndürmek için Lambda'yı kullanabilmeniz için not defteri örneği durumunu iletecek şekilde yapılandırılır. Olay kuralı şu şekilde yapılandırılır:
{ "detail-type": ["AWS API Call via CloudTrail"], "detail": { "eventSource": ["servicecatalog.amazonaws.com"], "eventName": ["ProvisionProduct"] }
}
EventBridge konsolunun aşağıdaki ekran görüntüsü, olay kuralınızı gösterir.
The AWS CloudTrail API için olay kaynağı kullanılarak izleniyor servicecatalog.amazonaws.com
. İzlenen olay adı: ProvisionProduct
. Bu olayı izlemek, dizüstü bilgisayar bulut sunucusunun başarılı teslim durumunu geri bildiren AWS Hizmet Kataloğu'na yanıt olarak etkili eylemde bulunmanıza olanak tanır. Zaman ProvisionProduct
olay meydana geldiğinde, adı verilen bir Lambda işlevi DemoEventBridgeFunction
son kullanıcıya önceden belirlenmiş bir URL döndüren çağrılır.
Önceden belirlenmiş not defteri örneği URL'lerini döndürmek için Lambda işlevi
AWS Service Catalog aracılığıyla kullanıcı tarafından istenen not defterlerine güvenli erişim sağlamak için önceden belirlenmiş bir URL oluşturulur ve kullanıcıya döndürülür. Bu, dizüstü bilgisayar örneğine erişmek ve iş açısından kritik işlevleri gerçekleştirmek için güvenli bir yöntem sağlar. Bu amaçla kullandığımız EventBridgeServiceKatalogFonksiyon işlevini kullanan bir Garson not defteri örneği durumunun kullanılabilir hale gelmesi için. Garsonlar, bir hizmeti sorgulamak ve belirli bir koşul karşılanana kadar bir görevin yürütülmesini askıya almak için bir araç sağlar. Hazır olduğunda, işlev önceden belirlenmiş bir URL oluşturur. Son olarak, işlev, oluşturulan önceden belirlenmiş URL ile bir SSM parametresi oluşturur. SSM parametresi aşağıdaki kalıbı kullanır: /SageMaker/Notebooks/%s-Notebook"%user_name/
. Bu, tüm SageMaker dizüstü bilgisayar SSM parametrelerimiz için ortak bir ad alanı oluşturmamızı sağlarken, bunları aşağıdakilere dayalı olarak benzersiz tutar: user_name
.
Önceden belirlenmiş URL'lerin tanımlı bir süre sonu vardır. Lambda işlevi, oturum süresi 12 saat olan not defterlerini dağıtır. Bu nedenle, geliştiricilerin mevcut önceden belirlenmiş URL'lerinin süresi dolduğunda yeni bir önceden belirlenmiş URL oluşturmaları gerekir. bu RefreshURLFişlev bunu, kullanıcıların API Ağ Geçidini çağırarak işlevi başlatmasına izin vererek gerçekleştirir. Geliştiriciler bu işlevi çağırabilir ve not defteri adlarını iletebilir ve önceden belirlenmiş bir URL döndürür. Ne zaman RefreshURLFunction
tamamlandığında, bir kullanıcı Parameter Store'u arayabilir, yeni önceden belirlenmiş URL'yi alabilir ve ardından not defterine erişebilir.
- Alın
RefreshURLFunction
Aşağıdaki koda sahip API Ağ Geçidi URL'si:
aws cloudformation describe-stacks --stack-name sam-app --query "Stacks[0].Outputs[?OutputKey=='RefreshURLFunctionAPI'].OutputValue" --output text --region us-east-1
Çıktı aşağıdaki gibi görünmelidir:
https://8mnr3ksi0d.execute-api.us-east-1.amazonaws.com/Prod/refreshurl/
- işlevi çağır
RefreshURLFunction
API Ağ Geçidini arayarak. Güncelleme input_url
önceki adımdaki URL ile:
curl -X POST <input_url> -d '{"notebook_user_name": "Demo-User"}'
Çıktı aşağıdaki gibi görünmelidir:
{"PreSignedURL": "https://demo-user-notebook-dctz.notebook.us-east-1.sagemaker.aws?authToken=eyJhbGciOiJIUzI1NiJ9.eyJmYXNDcmVkZW50aWFscyI6IkFZQURlRGw3R2E2OWZ3SmhjSlZKcDB1VjR2b0FYd0FCQUJWaGQzTXRZM0o1Y0hSdkxYQjFZbXhwWXkxclpYa0FSRUZzYVcxNVNsZGtXRXhCZGpVNGRIRkVTalo0V25SSk5WWTVUVEZHZFZaTVZtVldWRzQ0Tms1UGRWaEpSVFI2UTBwdGVFZDFWbFUxUzNoc1pYSXJia05YWnowOUFBRUFCMkYzY3kxcmJYTUFTMkZ5YmpwaGQzTTZhMjF6T25WekxXVmhjM1F0TVRvM05qUTNNRGM1TWpRME1UVTZhMlY1TDJJM01ETTNNRE5oTFdVMU5HTXROR1JtWWkxaE1HRTFMVGMyTnpNek1XWXlORGsxT1FDNEFRSUJBSGhlY3J4TGdEdDJaWmRKYk5nd3R4RHJpWmtZQnZUR1cwZWZCWVhaVW1VTTFBRjY1ZFVPdW5vQlY2MVdrTnM2OUVsdUFBQUFmakI4QmdrcWhraUc5dzBCQndhZ2J6QnRBZ0VBTUdnR0NTcUdTSWIzRFFFSEFUQWVCZ2xnaGtnQlpRTUVBUzR3RVFRTVhsY1gyeW5WMVQxNkdBRHlBZ0VRZ0RzUEVSVllMRVMzN1FVZklvVTZjd3RZdGI4NkIrT212aVF3cm5BOFVDSnZtMjRxYXJORllaOGgzRGlnSy8wVVBSR3hTeFpoaFhWSTA0Q1RlUUlBQUFBQURBQUFFQUFBQUFBQUFBQUFBQUFBQUFBcUEvUnVZOTk2alBLV09zaFNqZS9GLy8vLy93QUFBQUVBQUFBQUFBQUFBQUFBQUFFQUFBTlhGZFYwR1FHMXZpN2drQkhtOGtmWlBUL0dxcnhOamFSWkU0Tis3ZTJocEI0YXUxS0ozQ2ZnRUMrcHR3dk9JdjQwVGYrdnNWNUt5MjYyNGYvOVhrYmVZQklqdnlLV1JJR0ZyS2dxditVTXdJcE8ydDFIbWcvSmFhdEpGdFhudlJodVcwMG9ldVBLS3ZFeGRKQ3ppYkRkT3J3SG5IMFJqWEhTc2tydGxsTDM2Mll0a3k0Z1cwV2xGOUt3Zm1xb2FjVzZZRTZhV0RUZU9oQWprZXFkQ1FoVi9KRWYwaTA1Q1VxU0k1REZzSC8yS2grZHJxS0tBSVMyTjFRYnNSZ3VGNzFFcnBCM3BoV25PSTFnd3BGL3VNMCs5MHRsTGVCeG5ncElqT1NEY1pkbHlwQmpNZkVadUNYWGU4ZTJGRGQ0bGVENFdOZDdzc0F4OHFQWmV5eWI3WWo2L0FxaUtESmdLOStScS9BVGF6NkRFNFNyL3BaWmpRRFFab1oyV1ZCa2VVWHR2U1piVUd4aXJXRG0rVUUxVk5sbG85TmhwSEhhR1dIZEJPU0w5SUFUWWZDVjV6enVURHNDS2l1dVBQTmFVZGhvSUVuL2c1UXhtOFJvZUlVVUJRcUVvbms3T3d1QzJZOEM2QUowclVxL055T3R5NmF4TWY2VEdYcTFsTHB4WG9wMjlXT3lzR3daQSs4Mmo3em5SZEo2RTZTU005TnJYRi95OWxRS3dBTFBaK3FBNmszSEFvdDg5UlZYSGVMTFQ3TklwazVYVnZlRXY5S3N2MUp1Uk1FVVJEZjI1bnZtOXRmVnp0MUN0R0Y1RVBQNEpid2d5RnZ4RDlnRkVPTUM5dk1rdWloT3JnM3JaaDNwRjd1RDRsVVptVUtTRXV6ZVVmRFd0eEhjVHZoeUxFVmZuczhpcjl6SnFacGxpNVdYdjF3bTQ5WWxJNGlSM1FiamtZM0JybUFsOFBzZkRjYmZJUmVBNmkvQjVNeHFOb3RvU0Y0MHA1OFpJTGZPNmNNWURlVHpzT2dMbENmYXIwT3JMK1lRVk55MU5ETUF3cGRWaXlNeWI1RHl2SzlOV3ZOOUt2c2lMTklrV1IvU2s5ekx1RjBPd3F0aE5GWjhkbWkvMzRzc2pRMUFVR1BMR2ZXbUl1ZmlqRnhrRytnL1lKMjNSa1pIVmRvb1J4TUt3Zmk5OXQvUS96QmI2OUgyQlljbFZwUVl0RGV4Z3ZGWTg2TGpUMm5sSjkya09ad1duWW9OMWpMenIrVTVWQkJKakpDT09ENVA0MXBWckdHN1R4Nlh4UlFscGRqQ3E5ZFhXQlJiRDh6d0JDZ2VMY254SFlZTjUzR2hON2U3S3QyUmZyak5aREtSanUvTWNZSXRSTTVLU2ZaNWFNZ2NJUXY0a0tLNUppVll6OEdaY2VUSE5TT21Zb1FNeG1xMnNOSGJDZzZpUFM4KytvUkErdFhGY1JWMFkxSG9qZlVWS2NzREJjZmFQRVo0TENSZENvZnYrWFVWaHFSNzlCZGpyYW92Wmo1TitqZjFxdHdWZU9mVWJBQm5NR1VDTUN6UU4xMThWMTFZcXcwSWFhbmY0NUtIcjhnUC9MaVZHLzVRTy9yemREbzdZbkZEMmtzM3ZKbFQxVWE5N3kxY25nSXhBS2FxNEJsQ3R4UUc3b2Yxc1BaWld3K2NCalgzcGdIMWhXMHpYOU1zVzJOYXFCSklpUkp1VTJVaUU0cVdDVnh4eVE9PSIsImNpcGhlclRleHQiOiJBUUlCQUhoZWNyeExnRHQyWlpkSmJOZ3d0eERyaVprWUJ2VEdXMGVmQllYWlVtVU0xQUhyWlZxanJHYWVlMUY5c016d2pmM1pBQUFBb2pDQm53WUpLb1pJaHZjTkFRY0dvSUdSTUlHT0FnRUFNSUdJQmdrcWhraUc5dzBCQndFd0hnWUpZSVpJQVdVREJBRXVNQkVFRFBGVFJFbXQ2SmQ2VWoxMExnSUJFSUJibHBFOWtORGxpd21Yb2ltaEFiTC8xNmpYTVRhcDYvNnpSRlFLbjNHWE9mRlVRcUx6VEVBSUQvY095bDlMYU1NdzBRaHBjSWhERmpEL1U1R29sQmUrSHJ4QnJuRk1SMjNrWVR1K2tXUFZVYUcwRExPanl1YVhYR3VDOHc9PSIsIndvcmtzcGFjZU5hbWUiOiJkZW1vLXVzZXItam9lLW5vdGVib29rIiwid29ya3NwYWNlRG9tYWluTmFtZSI6ImRlbW8tdXNlci1qb2Utbm90ZWJvb2steXVvYyIsInN1YiI6IjE5NTg4OTY3MTY5MCIsImV4cCI6MTY0MDc0NDM1OCwiaWF0IjoxNjQwNzQwNzU4fQ.WGFEzQhC3lvA9IguA2tbCS6Us9mhRIV_6LiuRTAytSo"}%
- Bir tarayıcı açın ve şuraya gidin:
PreSignedURL
önceki adımdan.
Web sayfası aşağıdaki ekran görüntüsü gibi görünmelidir.
Sonuç
Bu gönderide, AWS CloudFormation kullanarak bir SageMaker dizüstü bulut sunucusu ortamı için altyapı bileşenlerinin nasıl dağıtılacağını gösterdik. Ardından, AWS Service Catalog API'sinden dizüstü bilgisayar bulut sunucusu durumunu döndürmek için EventBridge'in nasıl kullanılacağını gösterdik. Son olarak, teslim edilen kaynağa erişmek için önceden belirlenmiş not defteri örneği URL'sini döndürmek için bir Lambda işlevinin nasıl kullanılacağını gösterdik. Daha fazla bilgi için bkz. Amazon SageMaker Geliştirici Kılavuzu. Okuduğunuz için teşekkürler!
Yazarlar Hakkında
Joe Keating Amazon Web Services'de Profesyonel Hizmetler alanında Kıdemli Müşteri Teslimat Mimarıdır. AWS Bulut'ta çeşitli çözümler tasarlamak ve uygulamak için AWS müşterileriyle birlikte çalışır. Joe, bir veya iki kadeh şarapla yemek pişirmeyi ve golf sahasında sıradan olmayı sever.
mat çitler Amazon Web Services'de Bulut Uygulama Mimarıdır. Uygulamalarını AWS'de sunmak için teknoloji ihtiyaçlarını iş sürücüleriyle uyumlu hale getirmek için müşterilerle yakın bir şekilde çalışır. Geçişlere ve modernizasyona odaklanan Matt, bulutun tüm potansiyelini ortaya çıkaran değişikliklere öncülük etmek için dünyanın dört bir yanındaki kurumsal müşterilerle birlikte çalışır. Matt ailesiyle vakit geçirmeyi, müzik aletleri çalmayı, yemek yapmayı, video oyunları oynamayı, eski arabaları tamir etmeyi ve yeni şeyler öğrenmeyi seviyor.
Virjinya Çu Amazon Web Services'de Profesyonel Hizmetler alanında Kıdemli DevSecOps Mimarıdır. AWS Cloud'da çeşitli çözümler tasarlamak ve uygulamak için dünya çapında kurumsal ölçekte müşterilerle birlikte çalışır.