הגדרה וקונפיגורציה של CodeDeploy

שימו לב! המאמר עדיין לא גמור ורק חלק מהשלבים הרלוונטים מפורטים ומוסברים בו.

  1. אנו צריכים ליצור משתמש IAM (משתמש Non-admin) עם פוליסת CodeDeploy על מנת לאפשר לו לנהל את כל מה שקשור לCodeDeploy. לחילופין אנו יכולים לשדך את הפוליסה ל"קבוצה" ולשייך את המשתמש שיצרנו לאותה קבוצה.
  2. יצירת Instance Profile – מאפשר לנו לתת גישה לקוד רפוסיטי שלנו לEC2.
  3. יצירת Service Role – יאפשר לCodeDeploy להתקשר עם שירותים נוספים של AWS
  4. התקנת AWS CLI (מומלץ)

בשלב הראשון ניצור משתמש IAM חדש בשם MyCodeDeployUser

על מנת ליצור פוליסה מתאימה, נלחץ על AMI ואז של Policies.שם נלחץ על Create Policy

ואז נבחר באופציה CodeDeploy ונבחר את הפוליסה בשם "AWSCodeDeployFullAccess" או פוליסה אחרת שמתאימה לנו בהתאם לצורך.

לאחר מכן אנו צריכים להצמיד את הפוליסה למשתמש שאנו מעוניינים שיהיו לו את כל ההרשאות הקשורות לניהול CodeDeploy. נעשה זאת על ידי בחירת המשתמש MyCodeDeployUser תחת משתמשי הIAM שלנו ואז נלחץ על הוספת הרשאות. (בתמונה שם הפוליסה הוא MyCodeDeployPolicy אבל אצלכם שם הפוליסה יהיה AwsCodeDeployFullAccess

הגדרת Service Role מתאים לEC2

ניגש לIAM ואז לRoles, ואז נלחץ על Create Role.
ברשימת השירותים נבחר את השירות CodeDeploy וב Use Case נבחר "CodeDeploy"


ניתן שם לRole ונקרא לו CodeDeployServiceRole

מה זה CodeDeploy

CodeDeploy הוא שירות של AWS שמאפשר לנו להפוך את תהליך הDeployment שלנו לאוטומטי.

ייתרונות:
* Scale – ניתן לעשות דפלוי לשרת אחד או לאלפי שרתים ביחד
* שליטה – מאפשר לנו לקבל עדכונים ודוחות עם מידע לגבי מתי ומה דפלויד למערכת.
* צימצום זמן הDown Time שלנו – מאפשר שיטות דפלוי שונות כמו Rolling Updates ועוד.
* ניתן לעשות שימוש בCodeDeploy בכל שפה או טכנולוגיה – בתנאי שהקוד מנוהל במנוע מסוג GIT כמו CodeCommit לדוגמה או שהקוד שלנו יושב בS3
* ניתן לעשות דפלוי לשרתי EC2, לקונטיינרים או לSERVERLESS

למה אנחנו יכולים לעשות דפלוי?
* כמובן לקוד שלנו
* פונקציות Lambada
* סקריפטים
* קבצי מולטימדיה
ועוד…

יצירת kubernetes קלסטר בסיסי בקלות

מדריך ליצירת kubernetes קלסטר בסיסי בקלות

לא יודעים מה זה קוברנטיס? ליחצו כאן


פירוט השלבים:
שלב 1: התקנת DOCKER
שלב 2: התקנת kubeadm, kubelet ו kubectl
שלב 3: הפעלת המסטר נוד (Master Node) שלנו
שלב 4: צירוף 2 הNODES שלנו לקלסטר
שלב 5: הגדרות רשת עם Flannel

מכונה = Node
לשם ההדגמה אנו ניצור kubernetes קלסטר שמורכב מ3 מכונות , 2 מכונות שיהיו הNODES ומכונה אחת שתהיה הNode Master שלנו.
לשרת המסטר שלנו נקרא k8master , לשרת NODE הראשון נקרא k8node1 ולשני k8node2
ההפצה שבחרתי לעבוד איתה בהדגמה היא Ubuntu 18 LTS

בMASTER שלנו אנו נתקין:
* Docker
* Kubeadm
* Kubelet
* Kubectl
* Control Plane

בנודים שלנו נתקין:
* Docker
* Kubeadm
*Kybelet
*Kubectl

ולשם קישוריות רשת נשתמש בFlannel


השלב הראשון – התקנת DOCKER

השלב הראשון הוא להתקין DOCKER בכל אחת מהמכונות שלנו (במקרה שלנו 3 מכונות שמריצות אובונטו), להסבר איך להתקין ניתן ללחוץ כאן


השלב השני: התקנת kubeadm, kubelet ו kubectl

השלב השני הוא להתקין את השירותים הנל בכל אחת מהמכונות שלנו, להסבר כיצד ניתן להתקין אותם באובונטו ניתן ללחוץ כאן


השלב השלישי: הפעלת המסטר נוד (Master Node) שלנו

בשרת המסטר שלנו נריץ את הפקודה הבאה: (לוקח לה בדרכ כמה דקות עד שהפקודה מסיימת את הפעולה)

sudo kubeadm init --pod-network-cidr=10.244.0.0/16

אחרי כמה דקות, נקבל פלט שמכיל את הפקודה אותה אני נצטרך להריץ אחכ בכל Node שלנו על מנת שהוא יוכל להצטרף לקלסטר. חשוב לשמור את הפקודה ואת הטוקן – כי בלעדיו לא תוכלו לצרף Nodes לCluster שלכם. במקרה שלי הפלט שהתקבל הוא

kubeadm join 172.31.20.227:6443 --token k1vs3a.4i3zgo4zw725o3y7 --discovery-token-ca-cert-hash sha256:c94bb285d99e80c3674d8cc8951f957231b35431d5e0be982d4c0e9618156e06

לאחר מכן נריץ את הפקודה הבאה:

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

ולבסוף נוודא שהכל בוצע במסטר שלנו על ידי הפקודה:

kubectl version

כאשר הפלט שאנו נקבל אמור להיות דומה ל:


Client Version: version.Info{Major:"1", Minor:"12", GitVersion:"v1.12.7", GitCommit:"6f482974b76db3f1e0f5d24605a9d1d38fad9a2b", GitTreeState:"clean", BuildDate:"2019-03-25T02:52:13Z", GoVersion:"go1.10.8", Compi3f1e0f5d24605a9d1d38fad9a2b", GitTreeState:"clean", BuildDate:"2019-03-25T02:52:13Z", GoVersion:"go1.10.8", Compiler:"gc", Platform:"linux/amd64"}                                                  dea457638b614ee17ef234dc34a6", GitTreeState:"clean", BuildDate:"2019-07-08T03:40:54Z", GoVersion:"go1.10.8", Comp
Server Version: version.Info{Major:"1", Minor:"12", GitVersion:"v1.12.10", GitCommit:"e3c134023df5dea457638b614ee17ef234dc34a6", GitTreeState:"clean", BuildDate:"2019-07-08T03:40:54Z", GoVersion:"go1.10.8", Compiler:"gc", Platform:"linux/amd64"}

אם נריץ את הפקודה הבאה במסטר שלנו

kubectl get nodes

אנו אמורים לקבל פלט שמראה שרק המסטר שלנו הוא חלק מהקלסטר וזה כמובן בגלל שעוד לא צירפנו את 2 השרתים האחרים.

user@servername:~$ kubectl get nodes
NAME                          STATUS     ROLES    AGE    VERSION
servername.serverdomain.com   NotReady   master   4m3s   v1.12.7

השלב הרביעי: צירוף 2 הNODES שלנו לקלסטר

בכל אחד מהשרתים האחרים שלנו, k8node1 ו k8node2 נריץ את הפקודה שקיבלנו (בשלב 3) מקודם שמכילה את הטוקן. במקרה שלי היא הייתה:

kubeadm join MYIPADDRESS:6443 --token k1vs3a.4i3zgo4zw725o3y7 --discovery-token-ca-cert-hash sha256:c94bb285d99e80c3674d8cc8951f957231b35431d5e0be982d4c0e9618156e06

אחרי שהרצנו את הפקודה ב2 השרתים (ייתכן ותתבקשו להוסיף sudo) נריץ בשרת הMaster שלנו (k8master) שוב את הפקודה הבאה:

user@servername:~$ kubectl get nodes

NAME                          STATUS     ROLES    AGE   VERSION
servername1.serverdomain.com   NotReady   master   10m   v1.12.7
servername2.serverdomain.com   NotReady   <none>   40s   v1.12.7
servername3.serverdomain.com   NotReady   <none>   85s   v1.12.7

ושימו לב שהפעם המסטר שלנו מזהה את 2 השרתים האחרים, כולם עדיין בסטטוס של NotReady.


השלב החמישי: הגדרות רשת עם Flannel

לקריאה מקדימה על networking בקוברנטיס:

בכל 3 המכונות (Nodes) – כולל מכונת הMaster שלנו נריץ את הפקודות הבאות

echo "net.bridge.bridge-nf-call-iptables=1" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p

בשרת הMaster שלנו – ורק בו! נריץ את הפקודה הבאה:

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/bc79dd1505b0c8681ece4de4c0d86c5cd2643275/Documentation/kube-flannel.yml

לאחר מכן, כשנריץ את הפקודה:

kubectl get nodes

שוב, אנו אמורים לראות את 3 המכונות שלנו אבל הפעם כולן יהיו בסטטוס Ready.
נוכל להריץ גם את הפקודה הבאה:

kubectl get pods -n kube-system

שתאפשר לנו לראות גם את הPods שקשורים לFlannel


זהו, סיימנו להגדיר. מזל טוב!
קריאה נוספת:
לאתר הבית של קוברנטיס לקריאה נוספת ליחצו כאן
מה זה Pod?



מצאתם טעות? הערות? שאלות? הסתדרתם? נתקעתם? כתבו לי בתגובות!

יצירת טריגר CodeCommit לAWS SNS על מנת לקבל התראות CodeCommit

SNS – הוא שירות שמנהל שליחת הודעות, לדוגמה הודעות SMS, מיילים וכו.

את הטריגרים אנחנו יכולים ליצור באמצעות הAWS Console וגם כמובן באמצעות הAWS Cli, בהתאם למה שנוח לנו ובהתאם למה שנכון למיקרה והם מאפשרים לנו בעצם לקבל התראות על פעולות שקרו בGit Repo שלנו.

על מנת שנוכל ליצור טריגר לSNS כדי לקבל התראות CodeCommit עלינו לעמוד בתנאים הבאים:
1. הריפו שלנו בCodeCommit חייב להיות ממוקם באותו Region של הSNS Topic שלנו.
2. חייב להיות לנו SNS Topic קיים, ואם אין, אז כמובן צריכים ליצור אותו.


לצורך ההדגמה, יצרתי בCodeCommit ריפו בשם "GitRepoWithTriggersDemo"

יצרנו גיט ריפו בשם GitRepoWithTriggersDemo לשם ההדגמה.

עכשיו ניצור SNS Topic אליו נחבר את הטריגר שלנו:
ניכנס לAWS SNS ונלחץ על הכפתור Create Topic

מסך AWS SNS
נכנס לAWS SNS ונילחץ על הכפתור Create Topic על מנת ליצור "נושא" חדש

נבחר שם לנושא שלנו, במיקרה שלי בחרתי את השם המקורי "MyDemoTopic", נגלול את המסך למטה ונלחץ על הכפתור הכתום "Create Topic"

יצירת AWS SNS Topic חדש
נבחר שם לנושא שלנו, במיקרה שלי בחרתי את השם המקורי "MyDemoTopic"

אחרי שיצרנו את הSNS Topic, אנו צריכים לבחור את ה"מנויים" לנושא שלנו, "מנויים" הם אלו שיקבלו למעשה את ההודעות שאנו נפרסם בTopic. בדוגמה שלנו אנו נגדיר מנויים מסוג "דואר אלקטרוני", באותה מידה יכלנו כמובן להגדיר "SMS" אם היינו רוצים שהם יקבלו הודעת SMS. כדי להגדיר אותם נלחץ בתפריט הצדדי על Subscriptions ואז נלחץ על הלחצן "Create Subscription"

יצירת Subscriptions לSNS Topic מסך ראשון
כדי להגדיר אותם נלחץ בתפריט הצדדי על Subscriptions ואז נלחץ על הלחצן "Create Subscription"

במסך הבא נבחר באפשרות Email ובEndPoint נזין את כתובת הדואר האלקטרוני אליה אנו רוצים שתישלח הודעה בכל פעם שנפרסם או ייתפרסם משהו בTopic שלנו.

הזמנת מנוי לTopic
נזין את כתובת הדואר האלקטרוני אליה אנו רוצים שתישלח הודעה בכל פעם שנפרסם או ייתפרסם משהו בTopic שלנו.

הודעת מייל תישלח לכתובת מייל שהזמנו שמבקשת מאיתנו לאשר את המינוי לAWS Notifications לSNS Topic.

אישור רישום בדואל לנושא SNS
הודעת מייל תישלח לכתובת מייל שהזמנו שמבקשת מאיתנו לאשר את המינוי לAWS Notifications לSNS Topic.

עכשיו ניכנס בחזרה למסך הRepo שלנו בCodeCommit, נלחץ על Settings, נבחר את הטאב Triggers ונלחץ על Create Trigger

הוספת טריגר לריפו שלנו בCodeCommit

נבחר שם לטריגר החדש שלנו, אני בחרתי "NewBranch", נסמן את סוג האירוע (EVENT) שאנו מעוניינים שהטריגר שלנו יאזין לו, במקרה שלנו "Create Branch Or Tag". בסוג השירות אליו אנו מעוניינים שהטריגר שלנו ייתחבר נבחר "Amazon SNS" – ואז נבחר את הSNS Topic הרלוונטי – במקרה שלנו קראנו לו MyDepoTopic

נלחץ על Test Trigger וניגש לתיבת הדואל שהגדרנו בשלב הקודם (למנוי) ונוודא שקיבלנו הודעת מייל. ואכן קיבלנו הודעה.

נלחץ על לחצן "Create Trigger" כדי לשמור ולהפעיל את הטריגר החדש שיצרנו.

הטריגר שלנו נוצר בהצלחה.

עכשיו, בכל פעם שניצור Branch חדש בריפו שלנו, כל מי שרשום לSNS Topic שמקשור לטריגר שלנו יקבל על כך הודעה.

קלי קלות!

מצאתם טעות? הערות? שאלות? הסתדרתם? נתקעתם? כתבו לי בתגובות!


להמשיך לקרוא יצירת טריגר CodeCommit לAWS SNS על מנת לקבל התראות CodeCommit

מה הם טריגרים לAWS CodeCommit?

הטריגרים בCodeCommit הם למעשה הייתרון המשמעותית ביותר לשימוש בCodeCommit לניהול הקוד שלנו לעומת שירותים כגון GitHub, GitLab, BitBucket וכו.

טריגרים מאפשרים לנו לבצע פעולות בצורה אוטומטיות כאשר קרה EVENT מסויים בקוד ריפו שלנו ולמעשה הם מופעלים בתגובה לאירועים שקורים בקוד שלנו. לדוגמה, כאשר מישהו דחף (GIT PUSH) שינויים לקוד, או כאשר נוצר(או נמחק) Branch (או (GIT TAG) חדש ועוד נוכל אנחנו והצוות שלנו או כל מי שנירצה לקבל על כך התראה.

דוגמאות:

* יצירת BRANCH חדש יכולה להפעיל טריגר SNS topic על מנת להודיע לכל האנשים הרלוונטיים בצוות שלנו שנוצר Branch חדש כדי שהחברים שלנו יידעו שכדאי להם לעשות git pull למחשב הפיתוח שלהם.

שירותים לדוגמה שהטריגרים יכולים להפעיל עבורנו:

* פונקציות למבדה (Lambada Functions) – וואו, כאן ניתן לעשות כבר דברים מדהימים!
* SNS – AWS Simple Notification Service (שליחת הודעה בדואל, SMS וכו), אחד הייתרונות בחיבור לSNS הוא שזה מאפשר לנו להתחבר למעשה לכל השירותים אליהם SNS מתחבר כמו AWS SQS לדוגמה (Aws Simple Queue Service)


להמשיך לקרוא מה הם טריגרים לAWS CodeCommit?

העברת GIT REPO מGitHub לCodeCommit, הכיצד??

העברת REPO מGitHub ל AWS CodeCommit בקלי קלות.

במידה ויש לנו כבר GIT REPO באחד מהספקים הפופולארים כמו GitHub,GitLab,BitBucket וכו ואנו מעוניינים להעביר את ניהול הקוד לCodeCommit,
AWS מאפשרים לנו מספר אפשרויות:

1. העברת כל הREPO שלנו
2. העברת רק חלק מהBRANCHES
3. אנו יכולים להתחיל בהעברת רק חלק מהBRANCES ולאחר מכן להעביר את כל הREPO במידה ונירצה (הגירה בשלבים).

שימו לב! במידה וגודל הREPO שלנו גדול מ2GB,או שהREPO שלנו מכיל קבצים גדולים שלא ניתן לכווץ אותם (COMPRESS) בצורה טובה, ההמלצה היא להגר בשלבים ולא בבת אחת.


השלבים להעתקת ריפו מGITHUB לAWS CodeCommit

  1. ניצור משתמש בAWS עם הרשאות מתאימות ל CodeCommit
  2. נעתיק (CLONE) את הREPO שאנו רוצים להעביר מGITHUB למחשב שלנו.
  3. ניצור REPO חדש בCodeCommit דרך הAWS CLI
  4. ניצור למשתמש שלנו בAWS שם משתמש וסיסמא לCodeCommit
  5. נדחוף את הREPO שלנו מהמחשב לREPO בCodeCommit.

על מנת לעבוד עם CodeCommit יש ליצור משתמש בAWS עם ההרשאות המתאימות.

שימו לב, על מנת לעבוד עם CodeCommit יש ליצור משתמש בAWS עם ההרשאות המתאימות.

העתקת הREPO שלנו מGITHUB למחשב

למטרות הדגמה, עשיתי FORK בGITHUB שלי לרפו נחמד של Design Patterns בPHP בכתובת: https://github.com/avivronen/DesignPatternsPHP שאותו אעביר לCodeCommit.

השלב הבא הוא לבצע CLONE לREPO שאנו רוצים להעביר מGitHub לCodeCommit למחשב שלנו, אני כבר עשיתי את זה.

git clone --mirror <repourl> <mylocaltempdir>

החליפו את <repourl> בכתובת הריפו שלכם בGitHub
ואת <mylocaltempdir> במיקום התיקייה במחשב שלכם שאליה אתם מעוניינים להוריד את הREPO.

כפי שניתן לראות כרגע במחשב קיימת לי REPO בשם DesignPatternsPHP


יצירת REPO חדש בCodeCommit אליה נעתיק את הREPO מGITHUB

לאחר שיצרנו CLONE של הREPO שאנו רוצים להעביר במחשב שלנו, אנחנו ניצור REPO חדש בCodeCommit באמצעות הAWS CLI (אם טרם הגדרת את הAWS CLI במחשב שלכם, ליחצו כאן להסבר איך עושים את זה) על ידי הפקודה הבאה:

aws codecommit create-repository --repository-name avivtest --repository-description "aviv"

שם הריפו שבחרתי: avivtest
התיאור: aviv
התשובה שאנו אמורים לקבל צריכה להיות דומה למה שקיבלתי:

נוכל לוודא את זה על ידי כניסה לCodeCommit דרך ממשק AWS ושם ניראה את הREPO החדש שיצרנו.


יצירת שם משתמש וסיסמא למשתמש שלנו בAWS לCodeCommit

בנוסף, ניצור למשתמש שלנו בAWS שם משתמש וסיסמא לCodeCommit. לא לשכוח לתת למשתמש שלנו הרשאות לCodeCommit.
נלחץ על IAM, ושם ניראה את רשימת המשתמשים הקיימים, ונלחץ על המשתמש שלנו, במיקרה שלי שם המשתמש הוא codecommit.

נלחץ על Security Credentials

ונגלול למטה עד לחלק של "HTTPS Git credentials for AWS CodeCommit" ונלחץ על "Generate"

לאחר שלחצנו על GENERATE, יוצגו לנו שם המשתמש והסיסמא, שימו לב, זאת הפעם היחידה שנוכל לראות את הפרטים האלו – לכן חשוב לשמור אותם.


דחיפת הREPO מהמחשב שלנו לREPO החדש בCodeCommit

עכשיו אנחנו צריכים לדחוף את הREPO מהמחשב שלנו לREPO שיצרנו בCodeCommit.

ניכנס לתיקייה בה ממוקמת הREPO שהורדנו למחשב. במקרה שלי שם התיקייה הוא DesignPatternsPHP

cd DesignPatternsPHP

בשביל לדחוף את הREPO מהמחשב לREPO החדש שיצרנו בAWS נקליט את הפקודה הבאה,
נתבקש להזין את שם המשתמש והסיסמא שיצרנו בשלב הקודם.

git push https://git-codecommit.us-east-1.amazonaws.com/v1/repos/avivtest --all

כאשר https://git-codecommit.us-east-1.amazonaws.com/v1/repos/avivtest
זאת הכתובת של הREPO שלי ב CodeCommit.


כדי לדעת מה הכתובת של הREPO שלכם בCodeCommit ניתן להיכנס למסך הREPOS של CodeCommit, ושם נלחץ על HTTPS ליד שם הREPO שלנו, זה יעתיק לנו את הכתובת.

זהו! ככה פשוט, עכשיו כשניכנס דרך AWS לREPO שלנו בCodeCommit נוכל לראות שהREPO שלנו כבר הועתקה לשם.
עכשיו הREPO שלנו יושב בCodeCommit ונוכל להממשק באמצעות לשלל שירותי ה CI/CD של AWS בקלי קלות.


מצאתם טעות? הערות? שאלות? הסתדרתם? נתקעתם? כתבו לי בתגובות!

CodeCommit – הגדרת משתמשי IAM, Access Keys ומדיניות

CodeCommit – הגדרת משתמשי IAM, Access Keys ומדיניות

לא יודעים מה זה CodeCommit? ליחצו כאן

יצירת משתמש לCodeCommit דומה מאוד ליצירת כל משתמש IAM אחר, אנחנו צריכים ליצור משתמש ולתת לו הרשאות מתאימות על מנת שיוכל לעשות שימוש בCodeCommit.

התהליך רק ניראה מסובך בהתחלה, וידרוש מכם לקרוא את כל ההסברים, אבל אחרי שתעשו את זה פעם אחת זאת פעולה שלוקחת ממש כמה דקות!

יצירת המשתמש מורכבת מ5 שלבים:
שלב 1: בחירת שם המשתמש וסוג הAccess Type
שלב 2: בחירת ההרשאות המתאימות למשתמש
שלב 3: הוספת תגיות למשתמש
שלב 4: הצגת כל הפרטים ואישור יצירת המשתמש
שלב 5: תצוגת פרטי המשתמש והורדת הAccess Key

* ובעמוד הבא (2) נלמד איך להגדיר למשתמש החדש שלנו הרשאת SSH לCodeCommit.
* למעוניינים להתחבר באמצעות HTTPS ולא בSSH, בעמוד 3 תמצאו את ההסברים.

אחרי שהתחברנו ל AWS Console, אנחנו צריכים להיכנס לIAM – Identity & Access Managmet, נקיש בתיבת החיפוש IAM ונבחר את האפשרות IAM .


אחרי שנכנסו למסך הIAM אנחנו ניראה את המסך הבא:

בתפריט נבחר את האפשרות "Users" (נמצאת מתחת לGroups), ולאחר מכן נלחץ על "Add User"


שלב 1 – בחירת שם המשתמש וסוג הAccess Type

בשם המשתמש נזין את שם המשתמש הרצוי לנו, אני בחרתי "CodeCommit1", שימו לב, מאוד חשוב לסמן V באפשרות Programmatic Access.


שלב 2: בחירת ההרשאות למשתמש

במסך הבא (שלב 2), אנחנו צריכים לבחור הרשאות למשתמש, ניתן ליצור קבוצה ולה לשייך את ההרשאות המתאימות או לחילופין לשייך למשתמש פוליסה ישירות. אנחנו נבחר לשייך פוליסה ישירות (אולם ההמלצה שלי היא ליצור דווקא קבוצה לדוגמה "מפתחים" ואליה לשייך את הפוליסה המתאימה).
במסך חיפוש הפוליסה אנו נקליד CodeCommit ואז יופיעו לנו 3 פוליסות רלוונטיות:
AWSCodeCommitReadOnly
AWSCodeCommitPowerUser
AWSCodeCommitFullAccess.
ניתן ללחוץ על החץ ליד כל פוליסה על מנת לראות מה היא מאפשרת ובהתאם לבחור את ההרשאה הנכונה הרצויה שלנו. – אנחנו נבחר כרגע Full Access.


שלב מס 3: הוספת תגיות למשתמש

שלב מס 3 מאפשר לנו להוסיף TAGS (תגית) למשתמש, מומלץ מאוד, עוזר מאוד בחיפוש, בפירוט החיובים וכו, אבל במדריך הזה אני בחרתי שלא להוסיף.

שלב מס 4: הצגת כל הפרטים ואישורם


שלב מס 4 מציג לנו את כל הפרטים לאישור אחרון.

לאישור ויצירת המשתמש נלחץ על Create User.


שלב 5 והאחרון – תצוגת פרטי המשתמש ואפשרות הורדת הSecret Access Key שלו

שלב 5 והאחרון מציג לנו את המשתמש שיצרנו, שימו לב: זאת הפעם היחידה בה נוכל לראות את הSecret Access Key של המשתמש, לכן חשוב לשמור אותו. הדרך המומלצת לשמירה היא להוריד את קובץ הCSV.

לא לדאוג, אני אמחוק את המשתמש.. 🙂

כדי לוודא שהמשתמש נוצר בצורה תקינה, במסך הIAM נלחץ על USERS ונלחץ על המשתמש החדש שיצרנו, במקרה שלנו CodeCommit1.

ואכן ניתן לראות שלמשתמש יש את פוליסת ההרשאות שבחרנו.
וכמו כן, ניתן לראות שיש לו ACCESSKEY ID, אבל אין לו מפתח SSH עדיין.

בעמוד הבא, נצמיד מפתח SSH למשתמש החדש שיצרנו.

מצאתם טעות? הערות? שאלות? הסתדרתם? נתקעתם? כתבו לי בתגובות!

הקדמה ל CodeCommit

CodeCommit הוא שירות מנוהל של AWS לניהול ושיתוף קוד (GIT), כמו GitHub, BitBucket ושירותים נוספים שאתם בטח מכירים.


מה הייתרונות העיקריים של CodeCommit לעומת שירותים מנוהלים אחרים?

* סקאלביליות, זמינות וDurability
CodeCommit מאחסן את הרפוסוטוריס שלנו בS3 וDynamoDB ביותר מפסיליטי אחד בצורה מוצפנת
* אין הגבלה לגודל הרפסטורי ולקבצים שאנו מעלים אליו
* התממשקות מעולה לשאר שירות AWS כמו CodePipeline, Lambada , SNS – הרבה יותר נוח מכל פיתרון אחר
* ניתן להגר בקלות לCodeCommit משירותים אחרים כמו GitHub
* עובד עם כל כלי הGIT הרגילים שאתם מכירים.


איך מתחברים לCodeCommit?

כמו רוב שירותי הGIT, גם ל CodeCommit ניתן להתחבר גם באמצעות SSH וגם באמצעות HTTPS, בנוסף, כמו כל שירותי AWS ניתן לשלוט עליו באמצעות ה AWS CLI.

אני ממליץ לעשות שימוש בCodeCommit באמצעות SSH עם מפתחות (RSA Key Pairs), את המפתח שלנו אנחנו צריכים לקשר לחשבון IAM שלנו בAWS ושומרים אותו אצלנו במחשב.

האפשרות השנייה היא כמובן HTTPS, קלה יותר לשימוש, כאן אין צורך להגדיר מפתחות אבל אז יש צורך להקיש שם משתמש וסיסמא.
שימו לב, במידה ומתחברים באמצעות HTTPS יש לוודא שפורט 443 פתוח החוצה בפיירוואל שלנו (של המחשב שאנו עובדים איתו או במשרד), במידה ומתחברים בSSH יש לוודא שפורט 22 פתוח.

הייתרונות בשימוש HTTPS:
* קל יותר לשימוש, שם משתמש וסיסמא
* כל המידע שמועבר מוצפן
* רוב פיירוואלים כבר מוגדרים מראש לאפשר גישה דרך פורט 443.
למשתמשי מאק ככל הניראה תהיה בעיה לעשות שימוש בHTTPS עקב הבעיתיות ב Mac OSC keychain, יש לכך כמובן פיתרונות, אבל למשתמשי מאק הייתי ממליץ לעשות שימוש בHTTPS, כיון שאנחנו רוצים כמה שפחות להתעסק בכלים ויותר להתעסק בפיתוח הקוד שלנו.

ייתרונות בשימוש בSSH:
* פרוטוקול SSH הוא יעיל! בנוסף לא צריך להקיש שם משתמש וסיסמא בכל פעם.
* לטעמי האישי, מפתחות SSH בטוחים יותר, הרבה יותר קשה לזייף אותם לעומת זיוף סיסמאות (Brutal Force לדוגמה).
* כל הדאטא שעובר הוא מוצפן במעבר כמו בHTTPS
חסרונות: למשתמשים חדשים, יהיה יותר קשה לנהל את נושא המפתחות. בנוסף, ישנם פיירואלים אשר חוסמים גישה דרך פורט 22 וצריך לפתוח אותה.


כמה עולה CodeCommit?

רשימה מלאה ומעודכנת של המחירים ניתן למצוא כאן

חבילת החינם (Free Tier):
* מוגבלת ל5 משתמשים בחינם
* אין הגבלה לכמות הRepositoreis
* שטח איחסון של 50GB לחודש
* 10,000 קריאות לGit לחודש (Git Requests)

לכל משתמש מעל ה5 משתמשים הראשונים תשלמו כ1$ למשתמש, ותקבלו 10GB שטח איחסון למשתמש בנוסף ל50GB שכבר יש לכם, ו2000 קריאות לGIT בחודש לכל משתמש פעיל, שוב , בנוסף ל10,000 קריאות שכבר כלולות לכן בחבילה.

חישוב לדוגמה: בהנחה שיש לכם 10 משתמשים, החשבון הכולל יהיה כ10$:
5 משתמשים ראשונים: חינם
5 משתמשים נוספים, 1$ לכל אחד, סהכ 5$ נוספים.

צילום מסך מעמוד המחירים של CodeCommit
צילום מסך מעמוד המחירים של CodeCommit

וזאת בהנחה שלא תחרגו מהנל (שטח איחסון, כמות קריאות לGIT), כמובן שמומלץ להתעדכן במחירים המעודכנים באתר של AWS. בנוסף תשלמו 0.06$ לכל GB מעבר למה שכלול בחבילה, ו0.001$ לכל קריאת GIT נוספת (Git Request).
בתכלס, לרוב הסטארטאפים הקטנים או הצוותים הקטנים, חבילת החינם תהיה יותר ממספיקה. קשה לי להאמין שתחרגו מ50GB איחסון לחודש ו10,000 קריאות לGIT.


אלטרנטיבות פופלאריות ל CodeCommit, יש עוד המון, בחרתי את הפופלאריות ביותר:

יש עוד המון, בחרתי את הפופלאריות ביותר:
1. גיט האב: https://github.com/
2. ביט באקט: https://bitbucket.org
3. גיט לאב: https://gitlab.com


קריאה נוספת על CodeCommit

איך יוצרים משתמש עם הרשאות מתאימות ואיך מתחברים ל CodeCommit?

קריאה נוספת על CodeCommit