ฉันไม่พบภาพที่แชร์กับฉันผ่านแกลเลอรีรูปภาพที่แชร์ ปัญหานี้เกิดขึ้นกับทั้ง Az cmdlets และ Az CLI แม้ว่าเพื่อความสอดคล้อง ฉันจะยึดตัวอย่าง PowerShell ที่นี่ โปรดทราบว่าการอ้างอิงภาพที่เผยแพร่ต่อสาธารณะ เช่น ภาพที่เผยแพร่โดยMicrosoftWindowsServerจะสามารถแก้ไขได้ตามที่คาดไว้

มีแกลเลอรีที่แชร์อยู่สองแห่งที่เป็นปัญหา ทั้งสองแห่งอยู่ในผู้เช่าเดียวกัน และอีกแห่งมาจากการสมัครรับข้อมูลเดียวกัน ฉันกำลังเรียกใช้แบบสอบถาม (ซึ่งอันที่จริงฉันเป็นผู้สร้างและผู้ดูแลแกลเลอรีนี้ ฉันอยู่ในบทบาทผู้ร่วมให้ข้อมูล) . ฉันไม่สามารถแก้ไขรูปภาพจากแกลเลอรีใดแกลเลอรีหนึ่งได้เมื่อพยายามค้นหาหรือใช้รูปภาพโดยผู้เผยแพร่ ข้อเสนอ และ SKU... แต่จะทำได้เมื่อดำเนินการผ่าน API เท่านั้น ด้านล่างนี้เป็นตัวอย่างของวิธีที่ฉันตั้งค่าอิมเมจต้นทางที่จะอ้างอิง:

$virtualMachine = New-AzVMConfig -VMName MyVmName -VMSize Standard_D2_v2
$virtualMachine = Set-AzVMSourceImage -VM $virtualMachine -Publisher MyCompany -Offer MyOffer -Sku MySku -Version latest

$virtualMachineถูกส่งต่อมาNew-AzVMและแสดงข้อผิดพลาดต่อไปนี้:

ErrorCode: PlatformImageNotFound
ErrorMessage: The platform image 'MyCompany:MyOffer:MySku:latest' is not available. Verify that all fields in the storage profile are correct. For more details about storage profile information, please refer to https://aka.ms/storageprofile
ErrorTarget: imageReference
StatusCode: 404
ReasonPhrase: Not Found

น่าแปลกที่ฉันสามารถเห็นภาพได้เมื่อฉันสร้าง VM ในพอร์ทัลและใช้เครื่องมือเลือกรูปภาพเพื่อแสดง รูปภาพ ที่แชร์

ฉันสามารถใช้คำสั่งสำหรับจัดการรูปภาพที่แชร์เพื่อแก้ไขปัญหาได้ แต่สิ่งนี้จำเป็นต้องทราบข้อมูลเพิ่มเติมล่วงหน้า เช่น ชื่อแกลเลอรี กลุ่มทรัพยากรที่แกลเลอรีเป็นสมาชิก และการค้นหาจะต้องดำเนินการจากภายใน การสมัครรับข้อมูลแกลเลอรีมีอยู่ ในท้ายที่สุด ฉันสามารถขอ VM ได้สำเร็จหากฉันใช้ cmdlet เพิ่มเติมเหล่านี้เพื่อแก้ไข ID รูปภาพที่แชร์ จากนั้นอ้างอิงรูปภาพด้วย ID แทน:

Note: I can also use az sig commands to resolve the image ID as well.

# Have to first connect to the Azure subscription the gallery and image exist in
Connect-AzAccount -Tenant GALLERY_TENANT -Subscription GALLERY_SUBSCRIPTION

# Get the image definition using image name, name of the gallery, and the resource group the gallery belongs to
$sourceImageName = 'my-image-definition-name'
$imageDefinition = Get-AzGalleryImageDefinition -GalleryName MyCompany.ImageGallery -ResourceGroupName galleryResourceGroup -Name $sourceImageName

# Connect back to the tenant and subscription I actually want to build the VM in
Connect-AzAccount -Tenant MY_TENANT -Subscription MY_SUBSCRIPTION

# Reference the source image by ID
$virtualMachine = New-AzVMConfig -VMName MyVmName -VMSize Standard_D2_v2
$virtualMachine = Set-AzVMSourceImage -VM $virtualMachine -Id $imageDefinition.Id

งานนี้อีกเยอะ ใช้งานได้ แต่ฉันไม่ (และไม่ควร) คาดหวังว่าผู้ใช้และวิศวกรของเราต้องรวมการสมัครรับข้อมูล กลุ่มทรัพยากร และชื่อแกลเลอรี นับประสาต้องเปลี่ยนการสมัครรับข้อมูล เพียงเพื่อแก้ไขรหัสรูปภาพ ฉันไม่จำเป็นต้องข้ามผ่านห่วงเหล่านี้ใน UI สำหรับการใช้รูปภาพที่แชร์ ฉันเลือกรูปภาพที่แชร์ในเครื่องมือเลือกรูปภาพและดูว่ามีการแชร์อะไรกับฉันบ้าง

มีการกำหนดค่าบางอย่างที่ฉันขาดหายไปเพื่อให้ค้นหาได้โดยผู้เผยแพร่ ข้อเสนอ และ SKU หรือไม่ ผู้ใช้ (รวมถึงฉันด้วย) ที่ต้องการจะเห็นภาพเหล่านี้จะถูกเพิ่มในบทบาทผู้อ่านในแกลเลอรีที่แชร์ที่เป็นปัญหา และอีกครั้ง ข้อมูลมีอยู่ใน UI ฉันไม่เข้าใจว่าทำไมฉันไม่สามารถอ้างอิงรูปภาพเดียวกันโดยใช้ API โดยผู้เผยแพร่ ข้อเสนอ SKU และเวอร์ชัน

ฉันยังใช้ Azure CLI (ใช้งานแบบโต้ตอบได้ง่ายขึ้น) เพื่อพยายามแก้ไขรูปภาพที่แชร์โดยมีข้อมูลน้อยลง เช่น เฉพาะผู้เผยแพร่หรือละเว้น SKU แต่ไม่พบผลลัพธ์ที่ส่งคืน:

az vm image list -p MyCompany -f MyOffer --all -o table
az vm image list -p MyCompany --all -o table
no answer